首页 > 解决方案 > 基于动态传递的属性从对象数组中获取唯一值

问题描述

我有这种情况,我需要根据动态传递的属性获取所有对象的唯一值。我尝试了以下方法,但似乎不起作用。

var arr = [
  {
    id: "1",
    type: "x",
    source: {
      val1: "3",
      val2: "4",
      val3: "6",
    },
  },
  {
    id: "1",
    type: "x",
    source: {
      val1: "3",
      val2: "4",
      val3: "6",
    },
  },
  {
    id: "1",
    type: "x",
    source: {
      val1: "4",
      val2: "5",
      val3: "6",
    }
  }
];

现在说我通过 val1 它应该给我唯一值 3,4,如果我通过 val2 它应该给我 4,5。PS:我只会传递源属性中存在的参数。

我尝试过的方法:

 calculate = (param) =>
 {
   let uniqueValues = Array.from(
        new Set(arr.map((arr: any) => arr[param]))
   );
 }

标签: javascripttypescriptecmascript-6

解决方案


看起来,您也需要该source属性。

new Set(arr.map((o: any) => o.source[param]))

推荐阅读