首页 > 解决方案 > 如何从对象数组中返回匹配的属性值

问题描述

我有以下数组,

var abc = [
 {name: 'name1', id: '1', value: 1},
 {name: 'name2', id: '2', value: 3},
 {name: 'name3', id: '3', value: 2},
 {name: 'name4', id: '4', value: 2}
];

我想回来,

var abc = [
 {name: 'name3', id: '3', value: 2},
 {name: 'name4', id: '4', value: 2}
];

因为两个对象具有相同的值。我如何使用 lodash 或 javascript 来实现这一点。

标签: javascripttypescriptlodash

解决方案


您可以创建一个对象,其值将是一个数组,该数组将仅包含那些值相同的对象

var abc = [{
    name: 'name1',
    id: '1',
    value: 1
  },
  {
    name: 'name2',
    id: '2',
    value: 3
  },
  {
    name: 'name3',
    id: '3',
    value: 2
  },
  {
    name: 'name4',
    id: '4',
    value: 2
  }
];

let m = abc.reduce(function(acc, curr) {
  if (!acc.hasOwnProperty(curr.value)) {
    acc[curr.value] = [];
  }
  acc[curr.value].push(curr)
  return acc;
}, {})

Object.keys(m).forEach(function(item) {
  if (m[item].length > 1) {
    console.log(m[item])

  }

})


推荐阅读