繁体   English   中英

Javascript 对象数组输出

[英]Javascript Array of objects Output

 var input =[
  {make:"BMW", model:"320d"},
  {make:"TATA", model:"aria"},
  {make:"Maruti", model:"800"},
  {make:"Maruti", model:"wagnor"},
  {make:"BMW", model:"720d"},
  {make:"BMW", model:"320d"}  
];

var output ={};

解释:

我想要像下面这样的输出,比如基于相同键的值分组而不重复值(唯一)。 对象数组。 此处不得出现重复值。 我已经尝试了很多代码,但无法找出问题所在。

[object object]{  BMW:["320d","720d"],  Tata:['area']  Maruti:['800','wagonar'], }

由于 OP 不希望输出数组中有重复项:

ES6,版本 1:

 const input =[ {make:"BMW", model:"320d"}, {make:"TATA", model:"aria"}, {make:"Maruti", model:"800"}, {make:"Maruti", model:"wagnor"}, {make:"BMW", model:"720d"}, {make:"BMW", model:"320d"} ]; const output = {}; for (const {make, model} of input) { // create empty list if this is the first time we've seen this make output[make] = output[make] || []; // only add model, once (no duplicates in our list) if (!output[make].includes(model)) { output[make].push(model); } } console.log(output)

或者,代替if (!output[item.make].includes(item.model)) { ... ,
您可以使用if (output[item.make].indexOf(item.model) === -1) { ...

ES5,版本 2:

 input =[ {make:"BMW", model:"320d"}, {make:"TATA", model:"aria"}, {make:"Maruti", model:"800"}, {make:"Maruti", model:"wagnor"}, {make:"BMW", model:"720d"}, {make:"BMW", model:"320d"} ]; output = {}; input.forEach(function(item) { // create a new list if this is the first time we've seen this make if (!output[item.make]) { output[item.make] = [item.model] } // only add model, once (no duplicates in our list) else if (output[item.make].indexOf(item.model) === -1) { output[item.make].push(item.model) } }) console.log(output)

 const input =[ {make:"BMW", model:"320d"}, {make:"TATA", model:"aria"}, {make:"Maruti", model:"800"}, {make:"Maruti", model:"wagnor"}, {make:"BMW", model:"720d"}, {make:"BMW", model:"320d"} ]; const output = {}; const mem = {}; input.forEach((item) => { if(!output[item.make]) {output[item.make] = [] } if (mem[item.model] != item.make) { output[item.make].push(item.model) } mem[item.model] = item.make; }) console.log(output)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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