【发布时间】:2015-03-10 14:53:52
【问题描述】:
假设我们有两个数组
var firstArray = [{"id":1},{"id":3},{"id":5}]
var secondArray = [{"id":1},{"id":2},{"id":3},{"id":4}]
var missingValues = [];
for(var i=0; i < firstArray.length; i++) {
for(var j=0; j < secondArray.length; j++) {
if(firstArray[i].id === secondArray[j].id) {
//do something if I have the same id
} else {
missingValues.push(secondArray[j].id); // it should have unique values
}
}
}
for(var i = 0; i < missingValues.length; i++) {
//compare first array and missigValues and remove the same elements
}
我想得到以下结果。这意味着我需要比较两个数组并删除所有不在第二个数组中的对象,但我还需要保持相同的顺序
firstArray = [{"id":1},{"id":2},{"id":3},{"id":4]
有没有更好的方法来做到这一点?由于这些数组内部可能包含大量 JSON 数据,因此性能更明智。 我想尽可能避免多重嵌套。
【问题讨论】:
-
您能说明一下您需要做什么吗?
-
你的输出真的应该包含
{id: 2}吗?如果是这样,看起来您需要做的只是对第二个数组进行某种克隆。 -
你确定你提到的结果数组是正确的吗?
-
也许我在这里遗漏了一些东西,但您的示例使您看起来只需将
firstArray替换为secondArray。如果您只想从firstArray中删除secondArray中没有的内容,您所需的输出应NOT 包含2或4 -
您的示例 still 似乎允许返回第二个数组或克隆。这真的是你想要的吗?你的话似乎表达了不同的意思。
标签: javascript arrays json performance knockout.js