【问题标题】:Get uniq values from an array of object created using lodash从使用 lodash 创建的对象数组中获取唯一值
【发布时间】:2020-07-13 06:43:32
【问题描述】:

我是反应新手,在这里我试图从新创建的对象数组中获取唯一元素。

const data = _.uniq(
  orderData?.Sessions.map(session => ({
    label: `${session.Activity.Name}`,
    value: `${session.Activity.Name}`
  }))
);

我已经尝试过了,但它仍然使用两个键中的任何一个返回具有唯一元素的对象数组。

一个对象不应该被复制。

谁能帮我解决这个问题?

【问题讨论】:

    标签: javascript reactjs lodash


    【解决方案1】:

    应该是_.uniqBy(),参考uniqBy

    const data = _.uniqBy(
      orderData ? .Sessions.map(session => ({
        label: `${session.Activity.Name}`,
        value: `${session.Activity.Name}`
      })), 'label' or 'value'
    );
    

    应该是按标签或按值

    示例

    document.querySelector("body").onload = function() {
      // By 'label'
      console.log("By label");
      console.log(
        _.uniqBy(
          [
            {'label' : 'name', 'value' : 'Test Name 1'},
            {'label' : 'name', 'value' : 'Test Name 2'},
            {'label' : 'company', 'value' : 'Test Company 1'}
          ], 'label'
        )
      )
      // By 'vlaue'
      console.log("By value");
      console.log(
        _.uniqBy(
          [
            {'label' : 'name', 'value' : 'SO User'},
            {'label' : 'name', 'value' : 'SO User'},
            {'label' : 'company', 'value' : 'Test Company 1'}
          ], 'value'
        )
      )
    }
    <script src="https://cdn.jsdelivr.net/npm/lodash@4.17.10/lodash.min.js"></script>

    【讨论】:

      【解决方案2】:

      你必须使用_.uniqBy(data, 'id');//id that is key you have to remove duplicate value from array

      你的场景会这样使用

      如果被标签移除,那么

      const data = _.uniqBy(
        orderData ? .Sessions.map(session => ({
          label: `${session.Activity.Name}`,
          value: `${session.Activity.Name}`
        })),'label'
      );
      

      如果被一个移除,那么

      const data = _.uniqBy(
        orderData ? .Sessions.map(session => ({
          label: `${session.Activity.Name}`,
          value: `${session.Activity.Name}`
        })),'value'
      ); 
      

      如果您获得更多详细信息,那么Link

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-05-13
        • 2018-11-24
        • 1970-01-01
        • 2017-12-22
        • 1970-01-01
        相关资源
        最近更新 更多