繁体   English   中英

比较两个javascript对象算法

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM