我有一个char数组:
var charCode = [97,98,100,101,103];
我想循环遍历此数组,并将charCode[i]
与charCode[i+1]
进行比较,以便进行比较:
charCode[0] with charCode[1]
charCode[1] with charCode[2]
charCode[2] with charCode[3]
charCode[3] with charCode[4]
我还想检查一下是否charCode[i] +1 == charCode[i+1]
所以这意味着我想看看下一个元素是否比一个因子更大。还有一件事,如果例如charCode [3]不遵循该规则,我想将元素的索引存储在一个单独的变量中。
function fearNotLetter(str) {
var bool ;
var charCode = [];
for (var i = 0; i < str.length; i++) {
charCode[i] = str.charCodeAt(i);
// charCode = [97,98,99,100,101,103]
}
for (var n = 0; n < charCode.length; n++) {
/*
here I'm comparing every element with every other element,
which is obviously not what I want
*/
for (var j = n+1; j < charCode.length; j++) {
if (charCode[n] + 1 < charCode[j]) {
// don't know what to do here
}
}
}
return charCode;
}
fearNotLetter("abcdeg");
答案 0 :(得分:1)
您可以使用array.reduce
,如果不匹配,您可以将该值推送到中间数组
function fearNotLetter(str) {
var charCode = [];
str.split('').reduce(function(p,c){
var code_p = p.charCodeAt()
var code_c = c.charCodeAt()
if(code_c-code_p !== 1)
charCode.push(code_p)
return c
})
return charCode;
}
console.log(fearNotLetter('abcdeg'))
&#13;
答案 1 :(得分:0)
你需要一个正常的循环,因为你正在检查[i+1]
,所以不要去最后一个项目:
var charCode = [97,98,100,101,103];
// Loop from 0 to n-2.
for (var i = 0; i < charCode.length - 1; i++) {
if(charCode[i] +1 == charCode[i+1])
console.log(charCode[i] +1 + '==' + charCode[i+1]);
}
&#13;
答案 2 :(得分:0)
以下是一些修改。你正在运行你不需要的内循环。
function fearNotLetter(str) {
var bool ; // not sure what this is for
// you can borrow map from array instead of looping
var charCode = Array.prototype.map.call(str, str => str.charCodeAt(0))
// loop over the characters. I am starting at 1 so we stop when we get to the end
// you can access the first index by subtracting 1 from ii
for (var ii = 1; ii < charCode.length; ii++) {
if (charCode[ii - 1] === charCode[ii]) {
console.log('samsies', ii - 1, char(charCode[ii]), char(charCode[ii]))
}
else if (charCode[ii-1] + 1 === charCode[ii]) {
console.log('increment yo', ii - 1, char(charCode[ii -1]), char(charCode[ii]))
}
}
return charCode;
}
console.log(
fearNotLetter("abcddeg")
)
// helper function
function char(code) {
return String.fromCharCode(code)
}
答案 3 :(得分:0)
您想获取失败的索引吗?
function fearNotLetter(str) {
var failedElIndexes = [];
var j = 0;
for(var i = 0 in str){
if(i < (str.length-1)){
var n = str[i];
var m = str[++i];
if( String.fromCharCode(n.charCodeAt() + 1 ) != String.fromCharCode(m.charCodeAt() ) ) {
console.log(i + ": " + str[i]);
failedElIndexes[j] = i;
j++;
}
}else{
break;
}
}
return failedElIndexes;
}
var otherStr = "abcdeg";
var myErrIndexes = fearNotLetter(otherStr);
&#13;