javascript - 访问position[i]处的json元素并在map函数中更改它们的值

标签 javascript json

我有一个像这样的 json 文件

[
    {
        "label": "1556015903109.00",
        "value1": "1.7481",
        "value2": "1.7489",
        "value3": "1.7375",
        "value4": "2.5631"
    },
    {
        "label": "1556015954378.00",
        "value1": "1.7481",
        "value2": "1.7336",
        "value3": "1.7477",
        "value4": "2.5631"
    },
    {
        "label": "1556016004213.00",
        "value1": "1.7481",
        "value2": "1.7336",
        "value3": "1.7426",
        "value4": "2.5631"
    },
    {
        "label": "1556016034313.00",
        "value1": "1.7481",
        "value2": "1.7489",
        "value3": "1.7426",
        "value4": "2.5631"
    }
]

我正在尝试访问 label 下的所有元素,并将它们从 Unix 时间转换为日期时间,并使用新值更新数组

我构建了一个 map 函数,该函数应该访问元素并执行必要的数学魔法将其转换为正确的日期时间。

var json = json.map(function(a){
            var dateT= '';
              var changeUp = a.label.toString()
              for(i=0; i <changeUp.length; i++){
                  var timestamp = changeUp[i]
                  var newStamp = timestamp /1000
                  var date = new Date(newStamp * 1000);
                  var hours = date.getHours();
                  var minutes = "0" + date.getMinutes();
                  var seconds = "0"+ date.getSeconds();
                  var formattedTime = hours +':' + minutes.substr(-2) +':' + seconds.substr(-2);
                  var dateT = date + ":" + formattedTime;
                  console.log(dateT);
                  changeUp[i] = dateT;
              }

           });

预期结果应该是

[
    {
        "label": "Sat April 27th 2019: 11:34:67 etc",
        "value1": "1.7481",
        "value2": "1.7489",
        "value3": "1.7375",
        "value4": "2.5631"
    },
    {
        "label": "Proper Date Time",
        "value1": "1.7481",
        "value2": "1.7336",
        "value3": "1.7477",
        "value4": "2.5631"
    },
    {
        "label": "Proper Date Time",
        "value1": "1.7481",
        "value2": "1.7336",
        "value3": "1.7426",
        "value4": "2.5631"
    },
    {
        "label": "Proper Date Time",
        "value1": "1.7481",
        "value2": "1.7489",
        "value3": "1.7426",
        "value4": "2.5631"
    }
]

相反,当我尝试调试时,它只是不断重新打印数组的元素或给我 NaN。

最佳答案

我发现你的代码有问题

  • map 回调中缺少返回值,
  • label 已经是一个字符串,无需再次调用 toString ,并且您会循环遍历字符串中的每个字符,因此最终会得到错误的结果<

您可以像这样简单地使用解构map

let data = [{"label": "1556015903109.00","value1": "1.7481","value2": "1.7489","value3": "1.7375","value4": "2.5631"},{"label": "1556015954378.00","value1": "1.7481","value2": "1.7336","value3": "1.7477","value4": "2.5631"},{"label": "1556016004213.00","value1": "1.7481","value2": "1.7336","value3": "1.7426","value4": "2.5631"},{"label": "1556016034313.00","value1": "1.7481","value2": "1.7489","value3": "1.7426","value4": "2.5631"}]

let final = data.map(({ label, ...rest }) => {
  var newStamp = label / 1000
  var date = new Date(newStamp * 1000);
  var hours = date.getHours();
  var minutes = "0" + date.getMinutes();
  var seconds = "0" + date.getSeconds();
  var formattedTime = hours + ':' + minutes.substr(-2) + ':' + seconds.substr(-2);
  var dateT = date + ":" + formattedTime;
  return {
    ...rest,
    label: dateT
  }
})

console.log(final)

关于javascript - 访问position[i]处的json元素并在map函数中更改它们的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58246980/

相关文章:

javascript - 平滑滚动到顶部工作不顺畅

javascript - event.returnValue = false 替换 preventdefault 在 IE 11 中不起作用

javascript - babel-node 安装 "Only RSA and DSA public keys are allowed"

c++ - QT5.7 - 为什么我使用 QString 得到格式错误的 json 值,但使用 std::string 却完美无缺?

javascript - ngFor 和(单击)在 Ionic 2 和 Angular 2 中不起作用

javascript - 如何在代码中查找 jQuery 或 Zepto 的所有用法

JavaScript ajax、JSONP、回调函数来处理数据

javascript - 在 Node.js 中编辑和删除目录中文件的简单方法?

django - 验证 JSON 数据

java - 使用 Java 使用来自 RESTful Web 服务的 json 字符串结果填充 jtable