【问题标题】:Javascript Loop over array of objects and get unique valuesJavascript循环对象数组并获取唯一值
【发布时间】:2019-06-21 18:15:39
【问题描述】:

我有一个汽车对象数组 (carArray),我想遍历该数组并用只有 CarA: 'Ford' 类型的唯一对象填充一个新数组。

const carArray = [
{carA:'Ford'},
{carA:'Ford'},
{carB:'GM'},
{carB:'GM'},
{carA:'Ford'},
{carA:'Ford'},
{carB:'GM'},
{carB:'Ford'},
]

谁能告诉我该怎么做?

非常感谢您抽出宝贵时间。 问候, 升

【问题讨论】:

  • 您只想要一个看起来像{carA:"Ford"} 的对象还是所有看起来像{carA:"Ford"} 并具有其他独特属性的对象,例如{carA:"Ford", foo:"bar"}
  • 您真的要更改 carAcarB 的属性吗?
  • 您好,感谢您的快速回复。我只对一个对象感兴趣。 {carA: "Ford"},这个值将在我的前端应用程序中使用

标签: javascript loops iteration


【解决方案1】:

您可以使用 Set 并使用数组作为中性元素,以便稍后获取唯一值。

const
    array = [{ carA: 'Ford' }, { carA: 'Ford' }, { carB: 'GM' }, { carB: 'GM' }, { carA: 'Ford' }, { carA: 'Ford' }, { carB: 'GM' }, { carB: 'Ford' }]
    carA = [].concat(...new Set(array.map(({ carA = [] }) => carA)));
    
console.log(carA);

【讨论】:

  • 不确定 OPs 代码是怎么回事,但福特也在 carB 中
  • @epascarello,我读到了从属性carA获取唯一值的问题。
【解决方案2】:

试试这个

 let  newArray = [];
 carArray.forEach(function(car) {
   let arrayKey = Object.keys(car)[0]
   if (newArray.length > 0) {
       newArray.find(function (data) {
         if(!data.hasOwnProperty(Object.keys(data)[0])) { 
            newArray.push(car);
         }
       })
    }  else newArray.push(car)
 });

【讨论】:

  • 你好 elraphty,谢谢你的代码 sn-p。我有一个问题,为什么要检查 newArray 的长度(if (newArray.length > 0) {)?数组的长度现在是 128 长,但我们迭代的数组中只有几个项目。
  • 如果数组长度为 0 会抛出错误,因为数组是空的
  • 只有不同的对象将被传递给数组,即如果数组中有一个键为 Car A 的对象,则不会将其他具有 Car A 键的对象推送到数组中,因为它将是被视为重复
  • 对不起,另一个问题,你为什么使用:let arrayKey = Object.keys(car)[0],它没有在函数中使用?如果我只想让数组填充 carB 对象,我该怎么做?
  • 我很高兴@Lino,如果我的代码 sn-p 有帮助,请为我的答案投票或检查您是否认为是正确的答案
猜你喜欢
  • 1970-01-01
  • 2021-07-21
  • 1970-01-01
  • 2019-01-03
  • 1970-01-01
  • 2018-09-02
  • 1970-01-01
  • 2020-07-14
  • 1970-01-01
相关资源
最近更新 更多