我需要一种快速的方法来找到另一个数组。
以下示例描述了我的情况:
我需要找到数组A:
var A = ["A0", "B0", "C0", "D2", "E2", "F0", "G2"];
在数组B中(请注意,我的B数组可能包含数百万个结果):
B[
["X0", "O0", "I0", "Z2", "T2", "L0", "V2"],
["I0", "V2", "O0", "T0", "L4", "X0", "Z3"],
["A0", "B0", "C0", "D2", "E2", "F0", "G2"],
["Z2", "L7", "T0", "I1", "V3", "X0", "O0"],
["Z3", "I1", "O0", "T3", "X0", "L2", "V2"],
["O0", "X0", "I1", "T2", "V0", "Z3", "L2"],
["I0", "Z0", "L7", "X0", "V3", "O0", "T3"],
["L3", "X0", "I1", "O0", "V0", "Z1", "T1"]
];
是否有一个函数可以为我提供对错的陈述,也可以为我提供上述情况下的实际结果:B [2]
最佳答案
如果find数组中没有重复项,则可以将Array#findIndex
与Array#every
和Array#includes
一起使用。
function getIndex(needle, haystack) {
return haystack.findIndex(h => needle.every(n => h.includes(n)));
}
var a = ["A0", "B0", "C0", "D2", "E2", "F0", "G2"],
b = [["X0", "O0", "I0", "Z2", "T2", "L0", "V2"], ["I0", "V2", "O0", "T0", "L4", "X0", "Z3"], ["A0", "B0", "C0", "D2", "E2", "F0", "G2"], ["Z2", "L7", "T0", "I1", "V3", "X0", "O0"], ["Z3", "I1", "O0", "T3", "X0", "L2", "V2"], ["O0", "X0", "I1", "T2", "V0", "Z3", "L2"], ["I0", "Z0", "L7", "X0", "V3", "O0", "T3"], ["L3", "X0", "I1", "O0", "V0", "Z1", "T1"]];
console.log(getIndex(a, b));