【问题标题】:Compare 2 items in a javascript or jquery比较 javascript 或 jquery 中的 2 个项目
【发布时间】:2020-09-07 06:56:39
【问题描述】:

如果我能在这个问题上得到帮助,我会很高兴。

我创建了一组问题,其中包含供用户和计算机使用 jquery 进行选择的选项。用户的选择和计算机的选择存储在 2 个不同的数组中,如下所示: 用户选择 = ["a","b","c","a","d"]; 计算机选择 = ["e","b","a","d","d"];

现在我想计算两个选择中匹配的项目,例如上面示例中的第 2 项和第 5 项(“b”和“d”),我该怎么做?我尝试使用“==”和“===”符号进行比较,但我无法解决这个问题。如果我能指出正确的方向,我将不胜感激。我不介意答案是在 jquery 还是 javascript 中。谢谢

【问题讨论】:

标签: javascript jquery arrays arraylist compare


【解决方案1】:

最简单的解决方案是遍历一个数组并查看另一个数组中相同索引处的值是否相同 - 如果是,则递增计数器:

const userSelection = ["a","b","c","a","d"];
const computerSelection = ["e","b","a","d","d"];

let count = 0;

userSelection.forEach(function (answer, i) {
  if (computerSelection[i] === answer) {
    count++;
  }
});

console.log(count);

【讨论】:

  • 嗨塞巴斯蒂安,我如何定义“答案”?
  • @Jeshurun2020 它已被定义为回调中的参数。点击“运行代码 sn-p”按钮,看看它是如何工作的
【解决方案2】:

您可以使用reduce 来检查每个项目,然后增加计数器

const userSelection = ["a","b","c","a","d"];
const computerSelection = ["e","b","a","d","d"];

const count = userSelection.reduce((counter, item, index) => item === computerSelection[index] ? ++counter : counter, 0);

console.log(count);

如果顺序无关紧要:

const userSelection = ["a","b","c","a","d"];
const computerSelection = ["e","b","a","d","d"];

const count = userSelection.reduce((counter, item, index) => computerSelection.includes(item) ? ++counter : counter, 0);

console.log(count);

【讨论】:

  • 感谢 Reyno,但订单很重要。该项目必须与等效项目匹配。
【解决方案3】:

===== 会检查这两个对象是否相同,并且大多数情况下可以将其读取为“它们是否是内存中的相同对象”:

x = [1,2];
y = [1,2];

console.log(x==y);  // false
console.log(x===y); // false
console.log(x===x); // true

你可以做的是创建一个函数来定义两个对象的相等条件:如果是数组,如果元素匹配(在你的用例中,顺序很重要):

userSelection = ["a","b","c","a","d"]; 
computerSelection = ["e","b","a","d","d"];

function checkSelections(user, computer){
  return computer.filter(function(item, i){
    return user[i] === item;
   });
  }
  
  console.log(checkSelections(userSelection, computerSelection));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-24
    • 1970-01-01
    • 2013-10-12
    相关资源
    最近更新 更多