在Javascript中操纵对象数组

在Javascript中操纵对象数组,javascript,arrays,node.js,arrayobject,Javascript,Arrays,Node.js,Arrayobject,我有一个要操纵的对象数组 这是数组 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":"

我有一个要操纵的对象数组

这是数组

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
,这就是为什么您只能得到两个结果。另外,第二个值必须返回undefined,因为它是需求

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

})


这是我所能做到的。拜托,我只是想知道我做错了什么。假设有更好的方法来做到这一点。请注意,这听起来很懒,但我正在寻找更好的解决方案

请尝试阵列上的和方法

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”,“通信”:[{“姓名”:“约翰·史密斯”,“帐户id”:“234566654”,“comid”:“cs169612397275616092-1”,“状态”:“活动”,“电话号码”:“+4422222”,“扩展名”:“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”,“通信”:[{“名称”:“Math Lo”,“帐户id”:“26726447342”,“comid”:“cs169612397275616092-1”,“状态”:“活动”,“电话号码”:“4422222222”,“扩展id”:“2345654”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”:“2345654”,“comid”:“cs169612397275616092-2”,“status”:“Active”,“phoneNumber”:“+4422222222”,“extensionId”:“2763648749,”missedCall“:false,“standAlone“:false,“muted”:false}]},
{“id”:“256644477”,“timestamp”:“2019-01-21T11:53:29.338Z”,“userConnection”:“sbdbbgbg”,“ownerId”:“325453565”,“exec”:“execId”:“322545464”,“eventTime”:“2019-01-21T11:53:29.223Z”,“通信”:[{“名称”:“Ben Right”,“帐户id”:“234566554”,“comid”:“cs169612397275616092-2”,“状态”:“活动”,“电话号码”:“4422222”,“扩展名”:“27636449”missedCall“:false,“standAlone“:false,“muted”:false}]},
{“id”:“9932667378372”,“timestamp”:“2019-01-21T11:53:29.338Z”,“userConnection”:“sjvjvnfrev”,“ownerId”:“28643872329”,“exec”:“execId”:“268474374938”,“eventTime”:“2019-01-21T11:53:29.223Z”,“通信”:[{“姓名”:“Lowe John”,“帐户id”:“22254354”,“comid”:“cs169612397275616092-2”,“状态”:“活动”,“电话号码”:“+4422222”,“扩展id”2763648749,“missedCall”:false,“standAlone”:false,“muted”:false}]},
]
const obj=customerInformation.reduce(函数(结果,项){
返回result.concat({
id:item.id,
ownerId:item.ownerId,
userConnection:item.userConnection
});
}, []);

console.info(obj);
您没有解释如何组合元素,因此下面是一个粗略的猜测。我不会尝试解码您的错误,因为您发布的代码与您描述的不符?(例如,您将
comid
分配给
o.ownerId
,但您的预期结果没有显示,您将
user.id
分配给
o.extensionId
,但我在原始数组中没有看到任何
id
属性与预期结果中的
extensionId
值相同)

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”,“通信”:[{“姓名”:“约翰·史密斯”,“帐户id”:“234566654”,“comid”:“cs169612397275616092-1”,“状态”:“活动”,“电话号码”:“+4422222”,“扩展名”:“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”,“通信”:[{“名称”:“Math Lo”,“帐户id”:“26726447342”,“comid”:“cs169612397275616092-1”,“状态”:“活动”,“电话号码”:“4422222222”,“扩展id”:“2345654”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”:“2345654”,“comid”:“cs169612397275616092-2”,“status”:“Active”,“phoneNumber”:“+4422222222”,“extensionId”:“2763648749,”missedCall“:false,“standAlone“:false,“muted”:false}]},
{“id”:“256644477”,“timestamp”:“2019-01-21T11:53:29.338Z”,“userConnection”:“sbdbbgbg”,“ownerId”:“325453565”,“exec”:“execId”:“322545464”,“eventTime”:“2019-01-21T11:53:29.223Z”,“通信”:[{“名称”:“Ben Right”,“帐户id”:“234566554”,“comid”:“cs169612397275616092-2”,“状态”:“活动”,“电话号码”:“4422222”,“扩展名”:“27636449”missedCall“:false,“standAlone“:false,“muted”:false}]},
{“id”:“9932667378372”,“timestamp”:“2019-01-21T11:53:29.338Z”,“userConnection”:“sjvjvnfrev”,“ownerId”:“28643872329”,“exec”:“execId”:“268474374938”,“eventTime”:“2019-01-21T11:53:29.223Z”,“通信”:[{“姓名”:“Lowe John”,“帐户id”:“22254354”,“comid”:“cs169612397275616092-2”,“状态”:“活动”,“电话号码”:“+4422222”,“扩展id”2763648749,“missedCall”:false,“standAlone”:false,“muted”:false}]}
];
const result=customerInformation.reduce((res,el)=>{
const com=el.exec.communication[0];
//如果结果数组尚未包含该comid
如果(!res.some(el2=>el2.comid===com.comid)){
//加上
再推({
id:el.id,
ownerId:el.ownerId,
userConnection:el.userConnection,
状态:com.status,
comid:com.comid,
extensionId:com.extensionId,