超级简单的例子,
var beforeList = [{"name": "A"},{"name": "B"},{"name": "C"}]
var updateList = [{"name": "A"},{"name": "B"},{"name": "D"}]
我必须比较这两个,如果缺少数据,我必须在List之前插入updatelist
数据。
所以我想要的结果是,
function someLogicHere(beforeList, updateList){
// some logic here
return afterList(i.e [{"name": "A"},{"name": "B"},{"name": "C"},{"name": "D"}] in here)
}
任何好的或令人敬畏的lib或插件都可以。
我自己用forEach
制作,但确实很糟糕。
答案 0 :(得分:1)
这应该有用。
var afterList = beforeList.slice(0); //Clones the array
var elementPresent;
for (var i = 0; i < updateList.length; i++) {
elementPresent = false;
for (var j = 0; j < updateList.length; j++) {
if (updateList[i].name == afterList[j].name){
elementPresent = true;
break;
}
}
if(!elementPresent){
afterList.push({
"name": updateList[i].name
});
}
}
答案 1 :(得分:0)
一种方式:
var afterList = beforeList.slice(0);
// store all values for easy lookup
var lookup = {};
for (var i in beforeList)
lookup[beforeList[i].name] = true;
// look for values not in updateList & add to beforeList
for (var i in updateList)
{
if (!lookup[updateList[i].name])
afterList.push(updateList[i]);
}