首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用lodash.js删除对象数组中的重复项

使用lodash.js删除对象数组中的重复项
EN

Stack Overflow用户
提问于 2016-05-21 23:05:42
回答 3查看 11.1K关注 0票数 5

我正在尝试使用lodash.js删除重复的项目,但我无法使其正常工作。

这是数组中对象的结构:

代码语言:javascript
复制
{
   label: 'tagA',
   value: 1
}

假设我有这样的数组:

代码语言:javascript
复制
var objectsArray = [
  {
    label: 'tagA',
    value: 1
  },
  {
    label: 'tagB',
    value: 2
  },
  {
    label: 'tagC',
    value: 3
  },
  {
    label: 'tagB',
    value: 4
  },
  {
    label: 'tagB',
    value: 5
  },
];

我用lodash.js中的_.uniqBy()函数编写了这段代码,试图删除具有相同标签的数组元素,但它并没有像我预期的那样工作:

代码语言:javascript
复制
    var uniq = _.uniqBy(objectsArray, function(o){
        return o.label;
    });

我根据这里和那里找到的一些样本和lodash文档,当然,但我在这方面缺乏知识,所以任何帮助,它将非常感谢。

谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-05-21 23:11:18

请确保您使用正确的名称,代码适用于我:

代码语言:javascript
复制
    var arr = [
                {
                  label: 'tagA',
                  value: 1
                },
                {
                  label: 'tagB',
                  value: 2
                },
                {
                  label: 'tagC',
                  value: 3
                },
                {
                  label: 'tagB',
                  value: 4
                },
                {
                  label: 'tagB',
                  value: 5
                },
              ];

    var uniq = _.uniqBy(arr, function(o){
        return o.label;
    });

    console.log(uniq); // >> Returned an array with first 3 objects from array arr
票数 9
EN

Stack Overflow用户

发布于 2016-05-21 23:14:06

如果您想确保可以使用uniqWith();

这对我很管用

代码语言:javascript
复制
var data = [
  {
    label: 'tagA',
    value: 1
  },
  {
    label: 'tagB',
    value: 2
  },
  {
    label: 'tagC',
    value: 3
  },
  {
    label: 'tagB',
    value: 4
  },
  {
    label: 'tagB',
    value: 5
  },
];

var filtered = _.uniqWith(data, function(first, second){

    return first.label === second.label
});
票数 1
EN

Stack Overflow用户

发布于 2016-05-21 23:12:11

我认为第二个示例正是您需要的uniqBy

代码语言:javascript
复制
// The `_.property` iteratee shorthand.
_.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');
// → [{ 'x': 1 }, { 'x': 2 }]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37364563

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档