【问题标题】:Is there a way to choose only the properties of an array of objects which are different from each other?有没有办法只选择彼此不同的对象数组的属性?
【发布时间】:2020-12-08 08:44:54
【问题描述】:

假设我有这个对象数组。

let cars = [
  {
    color: "purple",
    type: "minivan",
    capacity: 7
  },  
  {
    color: "purple",
    type: "ferrari",
    capacity: 3
  },
  {
    color: "green",
    type: "bike",
    capacity: 1
  }

有没有一种方法可以只获取数组中的“紫色”和“绿色”值一次而不重复?

【问题讨论】:

  • 好吧,这就是你的整个阵列,没有什么可做的。向我们展示一些好的输入样本以及预期的输出,以及您解决此问题的尝试(即使使用伪代码)。 (提示:您可能需要使用.filter()
  • 或者您只想要color 的属性?在这种情况下,.map() 将完成这项工作

标签: javascript arrays object properties


【解决方案1】:

也许这就是你要找的东西

const colors = cars.map(car => car.color);
const unique = [...new Set(colors)];

【讨论】:

    【解决方案2】:

    试试这个:

    let cars = [
      {
        color: "purple",
        type: "minivan",
        capacity: 7
      },  
      {
        color: "purple",
        type: "ferrari",
        capacity: 3
      },
      {
        color: "green",
        type: "bike",
        capacity: 1
      }
    ]
    
    let colors = [];
    cars.forEach(car => {
      if(!(colors.includes(car.color))) colors.push(car.color);
    });
    
    console.log(colors);

    如果您需要整个car,那么只需推送car 而不是car.color

    【讨论】:

      【解决方案3】:
      var _ = require("lodash");
      const cars = [
        {
          color: "purple",
          type: "minivan",
          capacity: 7
        },  
        {
          color: "purple",
          type: "ferrari",
          capacity: 3
        },
        {
          color: "green",
          type: "bike",
          capacity: 1
        }
      ]
      _.uniqBy(cars, 'color')
      // Array (2 items)
      // 0: Object {capacity: 7, color: "purple" , type: "minivan"}
      // 1: Object {capacity: 1, color: "green" , type: "bike"}
      

      【讨论】:

        猜你喜欢
        • 2012-09-25
        • 2019-05-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-02
        • 2020-08-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多