gpt4 book ai didi

javascript - 比较数组函数返回未定义

转载 作者:行者123 更新时间:2023-11-30 10:09:49 25 4
gpt4 key购买 nike

嘿伙计们,我正在尝试比较两个数组...正确顺序(长度可能不同)和用户顺序(长度也可能不同)。我试过的:

function checkArrays(arrayA, arrayB){
var temp;
for(var i = 0; i < arrayA.length; i++)
{
if(arrayA[i] == arrayB[i]){
temp = temp + "<span class='green'>" + arrayB[i] + "</span> ";
}
else
{
temp = temp + "<span class='red'>" + arrayB[i] + "</span> ";
}
}

inputParagraph = document.getElementById("userInput");
inputParagraph.innerHTML = temp;
//inputParagraph.innerHTML = inputParagraph.innerHTML.replace(/undefined/g, '');
}

console.log(correctOrderArray);
控制台日志(用户数组);
console.log(checkArrays(correctOrderArray, userArray);
返回:

[1, 8, 20, 39, 72]
[1, 39, 20, 8, 72]
undefined<span class='green'>1</span> <span class='red'>39</span> <span class='green'>20</span> <span class='red'>8</span> <span class='green'>72</span>

我的问题是:当我为此函数返回 conosle.log 时,未定义从哪里来???

我找到的解决方案是函数注释的最后一行,但是像这样忽略这种情况是很蹩脚的......

最佳答案

问题是你只声明变量temp但永远不要用一个值初始化它,所以它是undefined直到设置一个值。

接下来发生的是您连接 temp使用字符串 <span class='green'><span class='red'> .一元 +如果至少一个操作数是字符串,则运算符执行字符串连接,并在必要时将其他操作数转换为字符串。但是因为 temp还不是字符串(它的类型是 undefined )然后类型转换从 undefined 发生至 String .这种转换的规则是它产生字符串 'undefined' .这就是您得到此结果的原因。

你应该初始化temp使用空字符串:

var temp = '';

固定示例:http://jsfiddle.net/ce6tyan2/

关于javascript - 比较数组函数返回未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27124001/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com