Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 改变JS数组的结构_Javascript_Arrays_Json - Fatal编程技术网

Javascript 改变JS数组的结构

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" } ] [ {

我是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"
  }
]
[
  {
    "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()将日期转换为所需格式。