Javascript / JSON:交换数组中的项目

时间:2012-11-16 12:56:19

标签: javascript arrays json swap

我是Javascript的新手,想要在数组中交换数组的项目。例如:

{
    "data": [
        [null, 1353064450],
        [null, 1353064460],
        [null, 1353064470],
        [null, 1353064480],
        [null, 1353064490]
        ],
    "label": "cpu"
}

应该成为:

{
    "data": [
        [1353064450, null],
        [1353064460, null],
        [1353064470, null],
        [1353064480, null],
        [1353064490, null]
        ],
    "label": "cpu"
}

我可能需要遍历数组并创建一个新数组?任何指针都会很棒!

2 个答案:

答案 0 :(得分:3)

使用现代JS,您可以obj.data = obj.data.map(([x, y]) => [y, x])

跨浏览器的支持可能不完整,因此您应该使用转换器将其转换为ES5,至少在不久的将来。

原始回答

使用Array.reverse方法:

var obj = {
    "data": [
        [null, 1353064450],
        [null, 1353064460],
        [null, 1353064470],
        [null, 1353064480],
        [null, 1353064490]
        ],
    "label": "cpu"
};
for(var i=0; i< obj.data.length; i++){
     obj.data[i].reverse();
}

答案 1 :(得分:0)

这是一种适用于现代浏览器的有趣方式(例如IE9及更高版本)

response.data.forEach(Function.call.bind([].reverse));

或者,如果您需要.call方法,并将this值绑定到一个本身在this上运行的方法(如上所述) ,您可以制作可重复使用的.call活页夹。

var callBind = Function.bind.bind(Function.call);

  // Then use it like this
response.data.forEach(callBind([].reverse));