首页 > 解决方案 > 从数组返回键值对

问题描述

我正在尝试从数组中返回键值对。请参阅下面的屏幕截图。

在此处输入图像描述

在此处输入图像描述

在这种情况下,我在 feature_contributions 中有许多属性(TITANIC.EMBARKED_CONTRIBUTION、TITANIC.FARE_CONTRIBUTIONS 等)。我想遍历每个属性并返回键、值对,例如(对于 TITANIC.EMBARKED_CONTRIBUTION C 0.02789997960547538、Q 0.023986753511113696 等)。

我的最终结果应该是所有键值对的列表,如下所示:

C 0.02789997960547538
Q 0.023986753511113696
S -0.09335021246545774
(7.55, 7.854] -0.0755071986
(7.854, 8.05] -0.0699985221

等等。

使用 forEach 循环我可以访问该属性,但我很难返回其中的键和值。我还尝试使用一个 for 循环来带回属性名称。感谢任何帮助。

 record.feature_contributions.forEach((obj) => console.log(obj));

 for (let value of Object.values(record.feature_contributions)) {
    console.log(value);
  }

标签: javascriptarrays

解决方案


试试下面的代码:

const contributions = record.feature_contributions
    .flatMap((obj) => Object.values(obj))
    .flatMap((contribution) => Object.entries(contribution));

正如我从您发布的屏幕截图中看到的那样,您有一个嵌套结构,这就是需要第一个 flatMap 的原因。这为您提供了一个贡献对象数组。Object.entries()从中,您可以使用该函数提取键值对。

对此样本数据进行了测试:

const record = {
  feature_contributions: [
    {
      "TITANIC.EMBARKED_CONTRIBUTION": {
        C: 0.02,
        Q: 0.02,
        S: -0.09
      }
    },
    {
      "TITANIC.FARE_CONTRIBUTION": {
        key1: -0.07,
        key2: -0.06
      }
    }
  ]
};

推荐阅读