【问题标题】:How to filter objects in a array based on the properties如何根据属性过滤数组中的对象
【发布时间】:2021-03-20 01:59:38
【问题描述】:

如何根据对象属性过滤数组中的对象?

我现在有这个代码:

products = [

    {
      title: "Bambu shorts 2.0"
    },
    {
      title: "Bambu shorts 2.0"
    },
    {
      title: "Bambu shorts 3.0"
    }
  ]

  uniqueProducts = [];

  $.each products, (i, el) ->
    if $.inArray(el.title, uniqueProducts) == -1
      uniqueProducts.push el
    return

我想通过每个对象的“title”属性过滤数组。 因此,如果对象的标题已经存在于 uniqueProducts 数组中,则不应添加该对象。

我的代码仍然将所有三个对象推送到 uniqueProducts 数组。

感谢您的建议!

【问题讨论】:

    标签: javascript jquery coffeescript


    【解决方案1】:

    您可以使用Set 进行过滤以获取看到的title

    const
        raw_products = [{ title: "Bambu shorts 2.0" }, { title: "Bambu shorts 2.0" }, { title: "Bambu shorts 3.0"  }],
        uniqueProducts = raw_products.filter(
            (s => ({ title }) => !s.has(title) && s.add(title))
            (new Set)
        );
    
    console.log(uniqueProducts);

    【讨论】:

    • 谢谢!你是怎么在咖啡脚本里写这个的?
    • 对不起,我不知道 coffescript
    • “s”从何而来?
    • s 是对集合的闭包,并通过在下面的行中使用new Set 调用来设置。
    • 啊!好的!我仍然对如何用咖啡脚本编写它感到有些困惑,但无论如何谢谢!
    猜你喜欢
    • 2021-04-15
    • 2018-12-25
    • 2018-07-06
    • 2021-04-09
    • 2020-02-29
    相关资源
    最近更新 更多