我无法检查主数组中包含的数组的内容。
示例:
我有两个数组
var main = [[1,2,3],
[4,5,6]];
var compare = [1,2,4,5,6]
我想将数组“compare”与数组“main”中的每个数组进行比较,看它是否包含任何数字。结果将是我可以测试的东西(布尔值或索引位置)。
我尝试过indexOf但无法理解。
修改 这应该仍然是真的:
var main = [[1,2,3], // returns false
[4,5,6], // returns false
[7,8,9], // returns true
[2,3,7]]; // returns true
var compare = [2,3,4,6,7,8,9]
**更新w / Solution ***
我需要检查比较数组的内容是否与main中的任何子数组相匹配。这就是我想出的:
var main = [[1, 2, 3],
[4,5,6]];
var counter = 0;
var counter2 = 0;
var compare = [4,1,3,2];
for (var i = 0; i <= compare.length; i++) {
// Sorting
compare.sort();
if (main[0].indexOf(compare[i]) > -1) {
counter++;
console.log("Added a point to counter 1");
} else if (main[1].indexOf(compare[i]) > -1) {
counter2++;
console.log("Added a point to counter 2");
} else {
console.log("No points added");
}
}
// if any of the counters have 3 marks, then the player hit it 3 times.
if (counter == 3 || counter2 === 3){
console.log("A counter is at 3");
}
关于我想出的任何反馈?有什么更好的方法呢?
答案 0 :(得分:1)
你需要2个循环,第一个迭代你的数组数组,第二个循环检查当前数组中的现有元素:
for (var i = 0; i < main.length; i++) {
for (var j = 0; j < main[i].length; j++) {
if (compare.indexOf(main[i][j]) {
//compare has a number from the current array! main[i][j] exists in compare!
}
}
}
答案 1 :(得分:0)
看看lodash库,已经编写了确切的功能
答案 2 :(得分:0)
您可以使用内置数组方法:
var result = main.map(function(xs) {
return xs.some(function(x) {
return compare.indexOf(x) > -1
})
})
它将返回[true, true]
答案 3 :(得分:0)
以下两种可能的解决方案:
假设:
var main = [[1,2,3],
[4,5,6],
[7,8,9],
[2,3,7],
[5,1,10]];
var compare = [2,3,4,6,7,8,9];
第一个解决方案:如果main
内部数组的任何元素包含在主compare
中,则返回true:
var result1= main.map(function(element,index,array){
return element.reduce(function(previousValue, currentValue, index, array){
return (previousValue || (compare.indexOf(currentValue) >= 0));
}, false);
});
此解决方案给出以下结果:
result1 = [true,true,true,true,false]
第二个解决方案:返回main
中compare
内部数组元素的索引:
var result2= main.map(function(element,index,array){
return element.map(function(element,index,array){
return (compare.indexOf(element));
});
});
此解决方案给出以下结果:
result2 = [[-1,0,1],[2,-1,3],[4,5,6],[0,1,4],[-1,-1,-1]]
点击此链接jsfiddle查看有效示例。
希望它有用!