提问者:小点点

以迭代的方式更改JSON对象的每个关键元素[重复]


这个JSON对象包含每个时间戳的水分级别,如下所示:

{
  "values": {
    "21-Aug-2020 20:28:06:611591": "58.59",
    "21-Aug-2020 20:28:09:615714": "71.42",
    "21-Aug-2020 20:28:12:630856": "95.11",
    "21-Aug-2020 20:28:15:640193": "83.69",
    "22-Aug-2020 14:56:31:099964": "54.46",
    "22-Aug-2020 14:56:34:107806": "50.35",
    "22-Aug-2020 14:56:37:109768": "53.78",
    "22-Aug-2020 14:56:40:110309": "72.62"
  }
}

我使用以下函数从Firebase接收这个JSON:

function extract(){
    
    var rp = require('request-promise')
    
    const options = {
        uri: "https://ds2-mdkx.firebaseio.com/Moisture.json",
        json: true
    }
    return rp(options)
    .then(res => {
        return { values: res }
    } ) 
}

我已经将这个函数的输出存储到一个基本包含对象的变量中:

 var ext = extract();

现在的问题是,我想要得到第一个元素。如果键名是“val1”,我可以通过键入ext.val1来访问该元素

 "val1": "58.59",

所以问题是:我如何以迭代的方式改变我的对象(字典)的每个关键元素,以便能够轻松地访问它们?

这是我的目标对象修改:

{
  "values": {
    "val1": "58.59",
    "val2": "71.42",
    "val3": "95.11",
    "val4": "83.69",
    "val5": "54.46",
    "val6": "50.35",
    "val7": "53.78",
    "val8": "72.62"
  }
}

共1个答案

匿名用户

您可以通过获取值来获取一个新对象。

null

const data = {
  "values": {
    "21-Aug-2020 20:28:06:611591": "58.59",
    "21-Aug-2020 20:28:09:615714": "71.42",
    "21-Aug-2020 20:28:12:630856": "95.11",
    "21-Aug-2020 20:28:15:640193": "83.69",
    "22-Aug-2020 14:56:31:099964": "54.46",
    "22-Aug-2020 14:56:34:107806": "50.35",
    "22-Aug-2020 14:56:37:109768": "53.78",
    "22-Aug-2020 14:56:40:110309": "72.62"
  }
}

data.values = Object.fromEntries(Object.values(data.values).map((v, i) => ['val' + (i + 1), v]));

console.log(data);