【发布时间】:2020-02-15 01:03:37
【问题描述】:
我有一个要操作的对象数组。
这是数组
const customerInformation = [
{"id":"12345678","timestamp":"2019-01-21T11:53:29.338Z","userConnection":"1942f0e6","ownerId":"234566654","exec":{"execId":"20326379004","eventTime":"2019-01-21T11:53:29.223Z","communication":[{"name":"John Smith","accountId":"234566654","comid":"cs169612397275616092-1","status":"Active","phoneNumber":"+442222222222","extensionId":"234566654","missedCall":false,"standAlone":false,"muted":false}]}},
{"id":"6374595864","timestamp":"2019-01-21T11:53:29.338Z","userConnection":"1942f0e6","ownerId":"155464348743","exec":{"execId":"1521648743","eventTime":"2019-01-21T11:53:29.223Z","communication":[{"name":"Math Lo","accountId":"26726447342","comid":"cs169612397275616092-1","status":"Active","phoneNumber":"+442222222222","extensionId":"234566654","missedCall":false,"standAlone":false,"muted":false}]}},
{"id":"98736478","timestamp":"2019-01-21T11:53:29.338Z","userConnection":"hblwrv890","ownerId":"98765322","exec":{"execId":"20326379004","eventTime":"2019-01-21T11:53:29.223Z","communication":[{"name":"James Olive","accountId":"234566654","comid":"cs169612397275616092-2","status":"Active","phoneNumber":"+442222222222","extensionId":"2763648749","missedCall":false,"standAlone":false,"muted":false}]}},
{"id":"256644477","timestamp":"2019-01-21T11:53:29.338Z","userConnection":"sbdbbgbg","ownerId":"32545453565","exec":{"execId":"32254655464","eventTime":"2019-01-21T11:53:29.223Z","communication":[{"name":"Ben Right","accountId":"234566654","comid":"cs169612397275616092-2","status":"Active","phoneNumber":"+442222222222","extensionId":"2763648749","missedCall":false,"standAlone":false,"muted":false}]}},
{"id":"99326672378372","timestamp":"2019-01-21T11:53:29.338Z","userConnection":"sjvjvnfrrev","ownerId":"28643872329","exec":{"execId":"268474374938","eventTime":"2019-01-21T11:53:29.223Z","communication":[{"name":"Lowe John","accountId":"2225454354","comid":"cs169612397275616092-2","status":"Active","phoneNumber":"+442222222222","extensionId":"2763648749","missedCall":false,"standAlone":false,"muted":false}]}},
]
我想做的是操纵数组以产生一个小得多的数组。数组应该是这样的。请注意,它使用的是唯一的comid,这就是为什么您只会得到两个结果。此外,第二个值必须返回未定义,因为这是要求
const obj = [{
'id': '12345678',
'ownerId': '234566654'
'userConnection': '1942f0e6',
'status' : 'Active',
'comid' : 'cs169612397275616092-1',
'extensionId' : '234566654',
'phoneNumber' : '+442222222222',
'startAt' : '2019-01-21T11:53:29.223Z',
},{
'id': undefined,
'ownerId': '98765322'
'userConnection': 'hblwrv890',
'status' : 'Active',
'comid' : 'cs169612397275616092-2',
'extensionId' : '2763648749',
'phoneNumber' : '+442222222222',
'startAt' : '2019-01-21T11:53:29.223Z',
}];
这就是我的代码现在的样子
var newArray= [];
customerInformation.forEach(function(element){
newArray.push(element.exec.communication[0].comid);
})
const uniqueId = [...new Set(newArray)];
var result = uniqueId.map(function(el) {
const [key, user] = Object.entries(customerInformation).find(([key, user]) => user.exec.communication[0].comid === el);
var o = Object.assign({});
o.extensionId = user.id
o.ownerId= user.exec.communication[0].comid
return o
})
这是我所能得到的。请我只是想了解我做错了什么。假设有更好的方法来做到这一点。请这听起来很懒,但我正在寻找更好的解决方案
【问题讨论】:
-
events变量看起来永远不会被定义。你能用文字解释一下数组应该如何组合吗?例如,为什么第一个 id 是12345678而第二个是undefined(除了comid之外的其他属性都一样)? -
这不是一个多维数组,这只是一个对象数组,其中包含另一个数组的键。多维数组如下所示:
var a = [ ['foo', 1], ['bar', 2] ]; -
是的,你的权利@afro 它的对象数组。我已经更正了代码
标签: javascript arrays node.js arrayobject