Javascript 改变JS数组的结构
我是javascript的初学者,我有一个小问题 我有这个:Javascript 改变JS数组的结构,javascript,arrays,json,Javascript,Arrays,Json,我是javascript的初学者,我有一个小问题 我有这个: [ { "date": "2014-04-23 00:00:00", "volumetrie": "22458" }, { "date": "2014-05-02 00:00:00", "volumetrie": "30585" }, { "date": "2014-03-27 00:00:00", "volumetrie": "49536" } ] [ {
[
{
"date": "2014-04-23 00:00:00",
"volumetrie": "22458"
},
{
"date": "2014-05-02 00:00:00",
"volumetrie": "30585"
},
{
"date": "2014-03-27 00:00:00",
"volumetrie": "49536"
}
]
[
{
"x": "2014-04-23T22:00:00.000Z",
"y": 22458
},
{
"x": "2014-05-02T22:00:00.000Z",
"y": 30585
},
{
"x": "2014-03-27T22:00:00.000Z",
"y": 49536
}
]
我想要这个:
[
{
"date": "2014-04-23 00:00:00",
"volumetrie": "22458"
},
{
"date": "2014-05-02 00:00:00",
"volumetrie": "30585"
},
{
"date": "2014-03-27 00:00:00",
"volumetrie": "49536"
}
]
[
{
"x": "2014-04-23T22:00:00.000Z",
"y": 22458
},
{
"x": "2014-05-02T22:00:00.000Z",
"y": 30585
},
{
"x": "2014-03-27T22:00:00.000Z",
"y": 49536
}
]
你有什么想法吗?
非常感谢您将来的回答;) 你可以通过
var origArr = [{"date": "2014-04-23 00:00:00","volumetrie": "22458"},{"date": "2014-05-02 00:00:00","volumetrie": "30585"},{"date": "2014-03-27 00:00:00","volumetrie": "49536"}];
forEach
循环数组元素并创建自己的
var modifArr = [];
origArr.forEach(function(elem){
modifArr.push({ x : (new Date(elem.date)).toISOString(), y : elem.volumetrie })
});
console.log(modifArr); // the array that you need
或map
var modifArr = origArr.map(function(elem){
return { x : (new Date(elem.date)).toISOString(), y : elem.volumetrie }
});
console.log( modifArr );
或者jQuery的每个
var modifArr = [];
$(origArr).each(function(index, elem){
modifArr.push({ x : (new Date(elem.date)).toISOString(), y : elem.volumetrie })
});
console.log( modifArr );
使用:
使用map()
。例如:
var test = [
{
"date": "2014-04-23 00:00:00",
"volumetrie": "22458"
},
{
"date": "2014-05-02 00:00:00",
"volumetrie": "30585"
},
{
"date": "2014-03-27 00:00:00",
"volumetrie": "49536"
}
];
var newArr = test.map(function(key){
return {x: key.date, y: key.volumetrie};
});
console.log(newArr);
请不要将jQuery用于这种情况。@pablochan它看起来像是IE8中没有forEach
,因此如果您需要支持,jQuery将是一个合理的选择。对我来说,使用jQuery的最大原因仍然是为了处理旧浏览器——相当比例的用户仍然使用IE8。@JoeEnos尖刻的回答是“请不要支持IE8”,但我不会这么说。我承认,如果你已经有了jQuery来做其他事情,那么使用它也没那么糟糕。@pablochan Yep,我试着告诉我的老板不要一直支持IE8。无效:)@KamranAhmed-由于问题以重复形式结束,您可以编辑您的答案以使用(新日期(item.Date)).toISOString()以便准确回答问题。这可能会对提出完整问题的用户有所帮助。请密切关注这一问题的浏览器兼容性-IE8显然不受支持-您必须编写自己的地图或使用类似的东西(如果需要支持)。生成的数组中的日期不是必须是ISO字符串吗?尽管如果需要,这个问题现在已作为重复问题解决查找准确答案,然后使用new Date().toISOString()将日期转换为所需格式。