gpt4 book ai didi

Javascript,按顺序比较两个数组,同时跳过不匹配的索引

转载 作者:行者123 更新时间:2023-12-02 14:30:36 25 4
gpt4 key购买 nike

我有两个数组:

var arr1 = [1,2,3,4,5]
var arr2 = [7,1,8,2,12,3,4,28,5]

我需要遍历 arr2 寻找与 arr1 的匹配项,但它必须按顺序 (1,2,3,4,5)。正如您在 arr2 中看到的,订单确实存在,但中间有一些数字。

[7,1,8,2,12,3,4,28,5]

我有大约 50 个类似于 arr2 的数组,因此我需要查看每个数组,当找到匹配项时,将其推送到“结果”对象。但有一个小问题是,某些数组不会包含整个匹配项,可能只有 1、2、3 或搜索的任何变体。另外,如果我正在搜索的数组不按顺序(即:从 2,3,4 开始),请完全跳过它。

这个想法是循环遍历这些数组,当我找到匹配项时,将计数添加到结果数组中。

例如,使用 arr1 作为搜索,遍历这些数组:

[7,1,8,2,12,3,4,28,5],[7,1,8,2,12,3 ,4],[7,8,1,2],[123]

得到如下所示的结果(搜索内容的字典,以及找到内容的计数):

{1:4, 2:4, 3:3, 4:2, 5:1}

我尝试做一堆 for 循环,但我不知道如何跳过我不寻找的数字,并继续下一次迭代,同时将结果保存到字典对象中。

最佳答案

let list = [[7,1,8,2,12,3,4,28,5], [7,1,8,2,12,3,4], [7,8,1,2], [1,2,3]];
let search = [1, 2, 3, 4, 5];

// Initialize result with zeros:
let result = search.reduce((result, next) => {
result[next] = 0;
return result;
}, {});

// Increment result for items found:
list.forEach(array => {
for (let i = 0, j = 0; i < array.length && j < search.length; ++i) {
if (array[i] == search[j]) {
++result[search[j]];
++j;
}
}
});

console.log(result);

关于Javascript,按顺序比较两个数组,同时跳过不匹配的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37871791/

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