javascript - 如何创建每个对象属性的数组?

标签 javascript

我发现了多个类似的问题,但无法了解如何执行以下操作:

我从服务器获取此类数据:

test_data = {
        '222': {
            joy: 66.5057373046875,
            fear: 1.0003513832343742,
            anger: 2.000018799044483,
            disgust: 3.004251452162862,
            sadness: 4.0001135088386945,
            contempt: 5.001299204188399,
            surprise: 6.203749045729637
        },
        '238': {
            joy: 97.06363677978516,
            fear: 17.500137131541123,
            anger: 27.00000593749519,
            disgust: 6.001324078417383,
            sadness: 21.000043172625737,
            contempt: 21.00033742573578,
            surprise: 32.62530106306076
        },
        '722': {
            joy: 66.5057373046875,
            fear: 60.000351383234374,
            anger: 70.00001879904448,
            disgust: 10.004251452162862,
            sadness: 92.0001135088387,
            contempt: 40.0012992041884,
            surprise: 50.20374904572964
        }
    }

我需要的是为 test_data 中的每个对象创建一个数组对象,例如 joyArray容纳所有joy值,fearArray所有fear值等。示例:

joyArray = [66.5057373046875, 97.06363677978516, 66.5057373046875]

我不知道该怎么做,我尝试使用 Object.keys但没能做到。有什么建议吗?

最佳答案

您可以使用reduce , Object.valuesObject.entries像这样:

const test_data = {'222':{joy:66.5057373046875,fear:1.0003513832343742,anger:2.000018799044483,disgust:3.004251452162862,sadness:4.0001135088386945,contempt:5.001299204188399,surprise:6.203749045729637},'238':{joy:97.06363677978516,fear:17.500137131541123,anger:27.00000593749519,disgust:6.001324078417383,sadness:21.000043172625737,contempt:21.00033742573578,surprise:32.62530106306076},'722':{joy:66.5057373046875,fear:60.000351383234374,anger:70.00001879904448,disgust:10.004251452162862,sadness:92.0001135088387,contempt:40.0012992041884,surprise:50.20374904572964}}

const output = Object.values(test_data).reduce((r, v) => {
  Object.entries(v).forEach(([k, v]) => (r[k] = r[k] || []).push(v))
  return r;
}, {})

console.log(output)

这将使用 test_data 中的每个键和值数组创建一个对象

关于javascript - 如何创建每个对象属性的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54553882/

相关文章:

javascript - 如何使 vis.js 网络上的边缘不可选择?

javascript - 单击链接两次(而不是一次)时会激活灯箱

javascript - 在 Meteor Mongo 中寻找值(value)

javascript - 更改 AnythingSlider 的尺寸

javascript - 在 Backbone.js 验证期间更改值

javascript - 在 KnovaJs 中,如何允许 Rect 用文本扩展或允许文本具有用文本扩展的边框,就像它在 Html 中的 Div

javascript - (Ruby、Rails、Javascript)使用 javascript 窗口等管理嵌套模型...?

javascript - 确定 Firebug 的 console.log() 是否在页面上的任何位置被调用

javascript - 使用 JavaScript 从时间戳获取星期几

JavaScript 数组值到变量