如何重命名或将多个键映射到新的键名称?

时间:2019-07-22 20:30:21

标签: node.js json

我正在使用JSON数据:

[
    {
        "name": "Person1",
        "a_miles": "110 mi"
    },
    {
        "name": "Person2",
        "b_miles": "22 mi"
    },
    {
        "name": "Person3",
        "a_miles": "552 mi"
    }
]

我需要将a_miles或b_miles重命名为“ total”,但似乎无法使.map()正常工作,因为它不允许将多个键设置为1个最终键。每个项目也都有A或B。

这是我到目前为止尝试过的:

    .data(function(data) {
        console.log('checking for KMs');
        for(key in data) {
            console.log(key);
            if(data[key].includes(' km')){
                console.log('KM found, deleting %s', key)
                delete data[key];
            }
        }
        //console.log(data)
        savedData.push(data);
    })
    .done(function() {
        var formattedJson = savedData.map(({
            name,
            a_miles:total,
            b_miles:total
        }) => ({
            name,
            total

        }));

也许我已经使事情复杂化了,我只需要一个总键/值来替换a或b,以便在整个数组结果中保持一致。

2 个答案:

答案 0 :(得分:1)

实际上,您可以将.map应用于对象,如已回答here
这是一个示例:

a.map(obj => {
  Object.keys(obj).map( key => {
    if (key.match('_miles')){
        obj['total'] = obj[key];
        delete obj[key];
    }
  })
})
console.log(a);
// [ { name: 'Person1', total: '110 mi' },
//  { name: 'Person2', total: '22 mi' },
//  { name: 'Person3', total: '552 mi' } ]

其中 a 是您建议的数组。希望对您有帮助

答案 1 :(得分:1)

看您的结构,如果您 Just 想要a_milesb_miles,则可以使用语法,也只需添加一个{{1} }:

OR