比较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