gpt4 book ai didi

javascript - 在数组数组中查找缺失的数组

转载 作者:行者123 更新时间:2023-11-30 12:59:10 25 4
gpt4 key购买 nike

我需要在“数组的数组”中找到缺失的数组。我首先在下面(在 StackOverflow 上)找到了这个函数:

function findDeselectedItem(CurrentArray, PreviousArray) {

var CurrentArrSize = CurrentArray.length;
var PreviousArrSize = PreviousArray.length;
var deselectedItem = [];

// loop through previous array
for(var j = 0; j < PreviousArrSize; j++) {

// look for same thing in new array
if (CurrentArray.indexOf(PreviousArray[j]) == -1)
deselectedItem.push(PreviousArray[j]);

}

return deselectedItem;
}

如果你做了这样的事情,这工作得很好:

oldarray = ["hi", "ho", "hey"];
newarray = ["hi", "hey"];

使用 findDeselectedItem(newarray, oldarray) 将返回 ["ho"]。

但是,我的内容是这样的:

oldarray = [["James", 17, 1], ["Olivia", 16, 0], ["Liam", 18, 1]];
newarray = [["Olivia", 16, 0], ["James", 17, 1]];

我如何调整上面的函数,以便它返回包含“Liam”的缺失数组。

谢谢

最佳答案

我会用名字作为键值进行散列。这将使查找丢失的内容变得微不足道并且非常快。然后,您可以优化该方法,而不是每次都重建散列,而是仅在确实需要时才重建。

var oldArray = [["James", 17, 1], ["Olivia", 16, 0], ["Liam", 18, 1]];
var newArray = [["Olivia", 16, 0], ["James", 17, 1]];

function findDeselectedItems(oldArray, newArray)
{
var results = [];

var hash = {};
for (var i=0; i<newArray.length; i++) {
hash[newArray[i].join(',')] = true;
}

for (var i=0; i<oldArray.length; i++) {
if (!hash[oldArray[i].join(',')]) {
results.push(oldArray[i]);
}
}

return results;
}

关于javascript - 在数组数组中查找缺失的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17897451/

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