如何解决比较javascript或jquery中的2个项目
如果能在此问题上获得帮助,我将很高兴。
我创建了一组带有选项的问题,供用户和计算机从jquery中选择。用户和计算机的选择存储在两个不同的数组中,如下所示: userSelection = [“ a”,“ b”,“ c”,“ a”,“ d”]; computerSelection = [“ e”,“ b”,“ a”,“ d”,“ d”];
现在我要计算两个选择中匹配的项目,例如在上面显示的示例中,项目2和5(“ b”和“ d”)如何处理?我尝试使用“ ==”和“ ===”符号进行比较,但无法解决。如果能指出正确的方向,我将不胜感激。我不在乎答案是在jquery还是javascript中。谢谢
解决方法
最简单的解决方案是遍历一个数组,看看另一数组中相同索引处的值是否相同-如果是,则增加计数器:
const userSelection = ["a","b","c","a","d"];
const computerSelection = ["e","d","d"];
let count = 0;
userSelection.forEach(function (answer,i) {
if (computerSelection[i] === answer) {
count++;
}
});
console.log(count);
,
您可以使用reduce来检查每个项目,然后增加计数器
const userSelection = ["a","d"];
const count = userSelection.reduce((counter,item,index) => item === computerSelection[index] ? ++counter : counter,0);
console.log(count);
如果顺序无关紧要:
const userSelection = ["a",index) => computerSelection.includes(item) ? ++counter : counter,0);
console.log(count);
,
===
和==
将检查两个对象是否相同,并且在大多数情况下可以将其读取为“它们在内存中是否是相同的对象”:
x = [1,2];
y = [1,2];
console.log(x==y); // false
console.log(x===y); // false
console.log(x===x); // true
您可以做的是创建一个函数,该函数定义两个对象的相等条件:在数组的情况下,如果元素匹配(在您的用例中,顺序很重要):
userSelection = ["a","d"];
computerSelection = ["e","d"];
function checkSelections(user,computer){
return computer.filter(function(item,i){
return user[i] === item;
});
}
console.log(checkSelections(userSelection,computerSelection));
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。