【问题标题】:Get duplicates from array of objects by value [duplicate]按值从对象数组中获取重复项[重复]
【发布时间】:2017-01-10 23:21:15
【问题描述】:

我有一个对象数组:

var arr = [
  {number: "AL-32021611", b: "7500"}, 
  {number: "AL-32021612", b: "Continental"}, 
  {number: "AL-32021612", b: "R3"}, 
  {number: "AL-32021612", b: "7500"}
];

有没有一种方法可以让我获得所有的数字巧合并在 var 中插入数字值“b”值?

例如

//loop

result = ["Continental", "R3", "7500"] 

我想要的是例如我接收数字,然后我搜索与该数字值的所有巧合,而我真正需要的是巧合中的所有值

【问题讨论】:

  • 所以您想丢弃出现number 的特定值单次出现的条目?结果不应该是像{"AL-32021612": ["Continental", "R3", "7500"]}? What should the result be if the first element of arr`是{number: "AL-32021611" , b: "United"}吗?
  • 我想要的是例如我接收数字,然后我搜索所有具有该数字值的巧合,而我真正需要的是巧合中的所有值

标签: javascript


【解决方案1】:

使用 ES6 功能:

let result = Array.from(new Set(arr.map(el => el.b)));

let result = [...new Set(arr.map(el => el.b))];

【讨论】:

  • 我认为这不是 OP 想要的。从 cmets 中,听起来 OP 想要提供特定的 number 值并获取相应的 b 值列表。
【解决方案2】:

Str 为您提供了一个很好的单行答案,但您也可以使用简单的 for 循环明确地做到这一点。见下文。

如你所愿,

result = {"Continental", "R3" , "7500"}; 

不是有效对象。您可以使用 for 循环并将 b 值推送到一个新数组中,如下所示:

结果 = ["大陆", "R3" , "7500"];

您的 for 循环如下所示:

var result = [];
for(var n of arr) {
    result.push(arr[n].b);
}
return result;

【讨论】:

    猜你喜欢
    • 2021-11-17
    • 1970-01-01
    • 2018-11-23
    • 2021-01-23
    • 1970-01-01
    • 1970-01-01
    • 2020-09-21
    • 1970-01-01
    • 2018-08-30
    相关资源
    最近更新 更多