[英]Comparing two javascript object algorithm
超級簡單的例子,
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
自己制作的,但這確實很糟糕。
這應該工作。
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
});
}
}
單程:
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]);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.