【问题标题】:How to get same values from 2 arrays with objects in ES6 Javascript?如何从 2 个带有 ES6 Javascript 对象的数组中获取相同的值?
【发布时间】:2021-09-12 07:37:26
【问题描述】:

所以我这里有两个不同的数组。

const test = [
    { firstName: "John", lastName: "Doe" },
    { firstName: "Michael", lastName: "Sins" },
    { firstName: "Alex", lastName: "Brown" }
  ];
const test2 = [
    { firstName: "Lisa", lastName: "Shore" },
    { firstName: "John", lastName: "Doe" },
    { firstName: "Justin", lastName: "Park" },
  ];

我想要的是使用 ES6(如果可能,进行过滤)或以任何适合实现输出的方式从两个数组中获取相同的值。我想要得到的结果是:

[{ firstName: "John", lastName: "Doe" }]

【问题讨论】:

标签: javascript arrays object ecmascript-6


【解决方案1】:

您可以尝试使用Array.prototype.filter()Array.prototype.some()

const test = [
    { firstName: "John", lastName: "Doe" },
    { firstName: "Michael", lastName: "Sins" },
    { firstName: "Alex", lastName: "Brown" }
  ];

const test2 = [
    { firstName: "Lisa", lastName: "Shore" },
    { firstName: "John", lastName: "Doe" },
    { firstName: "Justin", lastName: "Park" },
  ];

const res = test.filter(t1 => test2.some(t2 => 
                    t1.firstName == t2.firstName 
                    && t1.lastName == t2.lastName
                  ));
console.log(res);

【讨论】:

    【解决方案2】:

    如果您的对象具有除firstNamelastName 以外的属性,则此泔水仍然有效

    const test = [
        { firstName: "John", lastName: "Doe" },
        { firstName: "Michael", lastName: "Sins" },
        { firstName: "Alex", lastName: "Brown" }
      ];
      
      const test2 = [
        { firstName: "Lisa", lastName: "Shore" },
        { firstName: "John", lastName: "Doe" },
        { firstName: "Justin", lastName: "Park" },
      ];
      
      const tempTest2 = test2.map(item => JSON.stringify(item));
      
      const result = test.filter(item => tempTest2.includes(JSON.stringify(item)));
      
      console.log(result);

    【讨论】:

      【解决方案3】:

      你可以这样做:

      const test = [{ firstName: 'John', lastName: 'Doe' },{ firstName: 'Michael', lastName: 'Sins' },{ firstName: 'Alex',lastName: 'Brown' }]
      const test2 = [{ firstName: 'Lisa', lastName: 'Shore' },{ firstName: 'John', lastName: 'Doe' },{ firstName: 'Justin',lastName: 'Park' }]
      
      
      const getFullName = ({ firstName, lastName }) => firstName + lastName
      const test2Names = test2.map(getFullName)
      const result = test.filter((o) => test2Names.includes(getFullName(o)))
      
      console.log(result)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-07-26
        • 2022-11-14
        • 2013-02-14
        • 1970-01-01
        • 2019-05-25
        • 2020-05-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多