1

我对 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"
}

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

4

2 回答 2

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();
}
于 2012-11-16T12:59:30.183 回答
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));
于 2012-11-16T13:14:16.410 回答