object to array将key保留为第一个元素

时间:2016-01-09 13:20:32

标签: javascript

我有这个对象,我需要转换为数组并将对象键设置为数组的第一个元素,这是我到目前为止所得到的:

var a = {0:['a','b'],1:['c','d']},out =[];
out = Object.keys(a).map(function (key) { a[key][a[key].length] = key; return a[key]});

但关键是最后一个元素,out是[[" a"," b"," 0"],[" c&# 34;," d"," 1"]]

我需要它[[" 0"," a"," b"],[" 1",& #34; c"," d"]]

之后我用这个函数将第三个数组元素设置到第一个位置:

Array.prototype.move = function (old_index, new_index) {
if (new_index >= this.length) {
    var k = new_index - this.length;
    while ((k--) + 1) {
        this.push(undefined);
    }
}
this.splice(new_index, 0, this.splice(old_index, 1)[0]);
return this; // for testing purposes
};

有没有更好的方法来做到这一点,而无需重新排列数组元素?我不使用jquery或其他库

这是一个用于测试的jsfiddle:https://jsfiddle.net/9zv6cyau/

由于

1 个答案:

答案 0 :(得分:1)

使用Array#unshift在数组的开头添加元素

Demo

var a = {
        0: ['a', 'b'],
        1: ['c', 'd']
    },
    out = [];

out = Object.keys(a).map(function (key) {
    a[key].unshift(key); // Add the key at the beginning of array
    return a[key];
});
console.log(out);

document.body.innerHTML = '<pre>' + JSON.stringify(out, 0, 4) + '</pre>';