gpt4 book ai didi

javascript - JS检查一个数组是否嵌套在另一个数组中

转载 作者:行者123 更新时间:2023-11-30 17:14:39 25 4
gpt4 key购买 nike

我有一个二维 JS 数组,其中有些行是无用的,需要删除;特别是我需要删除嵌入其他行的行(说 B 行嵌入 A 行我的意思不仅是 A 是 B 的超集,而且 A 包含 B 中的所有元素,顺序和同样的顺序)

例如。我有:

var matrix = [
["User","Shop","Offer","Product","File"],
["User","Shop","File"],
["User","Shop","Map"],
["User","Shop","Promotion"],
["User","Shop","Offer","Product","Reservation"],
["User","Group","Accesslevel"],
["User","Group"],
["User","Reservation"],
["User","Shop"],
["User","Shop","Offer","Product","Markers"]
];

在此示例中,不应删除第二行 (["User","Shop","File"])(其所有元素都在第一行中,但不是连续的);

第 7 行(["User","Group"])应该删除,因为嵌入在第 6 行(["User","Group","Accesslevel"])和第 9 行(["User", “商店”]) 因为嵌入了许多其他内容中..

我正在寻找一种可能的高效算法来检查一个数组是否嵌入到另一个数组中;我将在 nodejs 中使用它。

最佳答案

这应该可以解决问题。

// Is row2 "embedded" in row1?
function embedded(row1, row2) {
return row2.length < row1.length &&
row2.every(function(elt, i) { return elt === row1[i]; });
}

//filter out rows in matrix which are "embedded" in other rows
matrix.filter(function(row) {
return !matrix.some(function(row2) { return embedded(row2, row); });
});

关于javascript - JS检查一个数组是否嵌套在另一个数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26342512/

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