【问题标题】:lodash unique based on attributelodash 基于属性的唯一性
【发布时间】:2016-02-20 18:38:25
【问题描述】:

我有一个对象数组,例如

[{ "name": "Jen", "age":31, "eyecolor": "blue", "hair":"brown"}, 
 { "name": "Jen", "age":32, "eyecolor": "green", "hair":"blonde"}, 
 { "name": "Jules", "age":31, "eyecolor": "blue", "hair":"brown"}, ,
 { "name": "Brian", "age":40, "eyecolor": "blue", "hair":"brown"}]

我需要一个 lodash 表达式,它会产生一组基于一个属性的唯一对象。例如,如果我使用 name,它会给我这三个:

[{ "name": "Jen", "age":31, "eyecolor": "blue", "hair":"brown"}, 
 { "name": "Jules", "age":31, "eyecolor": "blue", "hair":"brown"}, 
 { "name": "Brian", "age":40, "eyecolor": "blue", "hair":"brown"}]

【问题讨论】:

    标签: javascript lodash unique


    【解决方案1】:

    对于 Lodash 版本 4+,请使用 _.uniqBy():

    var arr = [{"name":"Jen","age":31,"eyecolor":"blue","hair":"brown"},{"name":"Jen","age":32,"eyecolor":"green","hair":"blonde"},{"name":"Jules","age":31,"eyecolor":"blue","hair":"brown"},{"name":"Brian","age":40,"eyecolor":"blue","hair":"brown"}];
    
    var unique = _.uniqBy(arr, 'name');
    
    console.log(unique);
    <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.js"></script>

    对于 4 以下的 Lodash 版本,请使用 _.uniq():

    var arr = [{"name":"Jen","age":31,"eyecolor":"blue","hair":"brown"},{"name":"Jen","age":32,"eyecolor":"green","hair":"blonde"},{"name":"Jules","age":31,"eyecolor":"blue","hair":"brown"},{"name":"Brian","age":40,"eyecolor":"blue","hair":"brown"}];
    
    var unique = _.uniq(arr, 'name');
    
    console.log(unique);
    <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/3.10.1/lodash.js"></script>

    【讨论】:

      【解决方案2】:

      如果你的 lodash 版本高于 4.0,你应该使用_.uniqBy()

      此时_.uniq()不起作用,它只接受一个参数,不能寻址迭代对象。

      var arr = [{ "name": "Jen", "age":31, "eyecolor": "blue", "hair":"brown"}, 
       { "name": "Jen", "age":32, "eyecolor": "green", "hair":"blonde"}, 
       { "name": "Jules", "age":31, "eyecolor": "blue", "hair":"brown"},
       { "name": "Brian", "age":40, "eyecolor": "blue", "hair":"brown"}];
      
      var result = _.uniqBy(arr, 'name');
      console.log(result)
      <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>

      参考
      https://lodash.com/docs/4.17.4#uniqBy

      【讨论】:

        猜你喜欢
        • 2016-09-15
        • 2022-01-22
        • 2014-12-06
        • 1970-01-01
        • 2013-04-16
        • 2019-05-16
        • 2016-07-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多