【问题标题】:Creating an object from a nested array with frequency of key as object value从嵌套数组创建对象,键的频率作为对象值
【发布时间】:2022-11-29 01:54:12
【问题描述】:

我想创建一个对象,这样键将包含数组中的每个唯一元素,而值将是键作为嵌套数组中第一个索引元素出现的频率。使用这个例子:

const test = [[1,3],[2,3],[3,6],[5,6],[5,7],[4,5],[4,8],[4,9],[10,4],[10,9]]

我希望生产这个

{
  '1': 0,
  '2': 0,
  '3': 2,
  '4': 1,
  '5': 1,
  '6': 2,
  '7': 1,
  '8': 1,
  '9': 2,
  '10': 0
}

但是,这是我的代码产生的:

{
  '1': 0,
  '2': 0,
  '3': 0,
  '4': 0,
  '5': 0,
  '6': 0,
  '7': 0,
  '8': 0,
  '9': 0,
  '10': 0
}

这是我的代码:

const result = {}
for(let i = 0; i < matches.length; i++){
    result[test[i][0]] = result[test[i][1]] ? result[test[i][0]] + 1  : 0
    result[test[i][1]] = result[test[i][1]] ? result[test[i][0]] + 1  : 0
}

【问题讨论】:

  • 嵌套数组的所有第一个值是什么?
  • @NinaScholz 我要创建一个对象,该对象将跟踪每个数组中第一个值作为第二个值出现的频率。

标签: javascript


【解决方案1】:

你可以做...

const
    pairs = [[1, 3], [2, 3], [3, 6],[5, 6],  [5, 7], [4, 5], [4, 8], [4, 9], [10, 4], [10, 9]],
    counts = pairs.reduce((c, [l, r]) => {
        c[l] ??= 0;
        c[r] ??= 0;
        c[r]++;
        return c;
    }, {});

console.log(counts);
.as-console-wrapper { max-height: 100% !important; top: 0; }

【讨论】:

    猜你喜欢
    • 2019-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-21
    • 2021-08-02
    • 1970-01-01
    • 2021-11-28
    • 1970-01-01
    相关资源
    最近更新 更多