比较2个阵列值推只有第一个结果

我有一个数组,我需要比较它的价值观 - 如果有重复的 - 我想将它们存储在阵列,例如:比较2个阵列值推只有第一个结果

obj1 = [{"manager_id":1,"name":"john"},{"manager_id":1,"name":"kile"}, 

{"manager_id":2,"name":"kenny"},

{"manager_id":4,"name":"stan"}]

obj2 = [{"employees_id":1,"name":"dan"},

{"employees_id":1,"name":"ben"},{"employees_id":1,"name":"sarah"},

{"employees_id":2,"name":"kelly"}]

如果“manger_id “===” employees_id - 那么结果将是:

// {1:[{"manager_id":1,"name":"john"},{"manager_id":1,"name":"kile"}, 

{"employees_id":1,"name":"dan"}, {"employees_id":1,"name":"ben"},

{"employees_id":1,"name":"sarah"}]};

我已经试过:

var obj1 = [{  

"manager_id": 1,

"name": "john"

}, {

"manager_id": 1,

"name": "kile"

}, {

"manager_id": 2,

"name": "kenny"

}, {

"manager_id": 4,

"name": "stan"

}];

var obj2 = [{

"employees_id": 1,

"name": "dan"

}, {

"employees_id": 1,

"name": "ben"

}, {

"employees_id": 1,

"name": "sarah"

}, {

"employees_id": 2,

"name": "kelly"

}];

var res = obj1.concat(obj2).reduce(function(r, o) {

r[o.manager_id] = r[o.employees_id] || [];

r[o.manager_id].push(o);

return r;

}, {});

console.log(res);

.as-console-wrapper {  

max-height: 100% !important;

top: 0;

}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>  

<div></div>

正如你可以的“经理标识”的结果不说 - 只有一个 - 时应该有更多的

如果MANAGER_ID === employees_id //应在第一个关键

输出

{1:[{"manager_id":1,"name":"john"},{"manager_id":1,"name":"kile"}, 

{"employees_id":1,"name":"dan"}, {"employees_id":1,"name":"ben"},

{"employees_id":1,"name":"sarah"}]};

正如你可以看到有几个共同的id

回答:

r[o.manager_id] = r[o.employees_id] || [];在此声明,如果管理者没有一个EMPLOYEE_ID的阵列是该ID复位。

一种方式这样做是正确的是:

var res = obj1.concat(obj2).reduce(function(r, o) { 

var id;

if(o.hasOwnProperty('manager_id')) {

id = o['manager_id'];

}

else {

id = o['employees_id'];

}

r[id] = r[id] || [];

r[id].push(o);

return r;

}, {});

回答:

问题依赖于这一行:

r[o.manager_id] = r[o.employees_id] || []; 

你应该记住,在你的阵列的一些对象具有manager_id和其他一些不,他们有employees_id而不是,所以你必须首先用这条线来评估:

var itemId = o.manager_id || o.employees_id; 

试试这个代码:

var res = obj1.concat(obj2).reduce(function(r, o) { 

var itemId = o.manager_id || o.employees_id;

r[itemId] = r[itemId] || [];

r[itemId].push(o);

return r;

}, {});

以上是 比较2个阵列值推只有第一个结果 的全部内容, 来源链接: utcz.com/qa/265828.html

回到顶部