如何使用lodash或任何其他更好的方法排除数组的某些值

时间:2017-10-23 10:49:41

标签: javascript lodash

我想在数组中显示Object的特定值,例如,这是我的数组:

{  
    _id: "myid",  
    typeFilter: "two",  
    brand: "ABC",  
    mrp: "50,000.00",  
    Insurance: "1,596.00",  
    registration_charg: "5,510.16"  
},
// ...
{
    _id: "myid2",  
    typeFilter: "three",  
    brand: "ABC",  
    mrp: "40,000.00",  
    Insurance: "8,596.00",  
    registration_charg: "7,580.16"  
},
// ...

这是我从我的数据库中获取的内容,因此brand值在2个位置为ABC 在我的代码中,我只在Picker中显示品牌价值所以我得到的是同一品牌的2倍,我想让它只出现一次 那我怎么能实现这个呢?

3 个答案:

答案 0 :(得分:2)

如果ES6不是问题,您可以使用Set来获取没有重复项的品牌列表:



var arr= [
{  
    _id: "myid",  
    typeFilter: "two",  
    brand: "ABC",  
    mrp: "50,000.00",  
    Insurance: "1,596.00",  
    registration_charg: "5,510.16"  
},
{
    _id: "myid2",  
    typeFilter: "three",  
    brand: "ABC",  
    mrp: "40,000.00",  
    Insurance: "8,596.00",  
    registration_charg: "7,580.16"  
}
];

var brands = Array.from(new Set(arr.map(el => el.brand)));
console.log(brands);




答案 1 :(得分:2)

使用lodash:

var brands = _.uniq(_.map(array, "brand"));

_.map将获得所有品牌名称(包括重复项)的数组,然后_.uniq将删除重复项并返回一组唯一值。

答案 2 :(得分:0)

function removeDuplicates(myArr, prop) {
  return myArr.filter((obj, pos, arr) => {
    return arr.map(mapObj => mapObj[prop]).indexOf(obj[prop]) === pos;
  });
}

myArr是一个对象数组。此函数返回一个不包含重复道具值的数组。在您的情况下,您可以传递数组和品牌