我有这个对象,我需要转换为数组并将对象键设置为数组的第一个元素,这是我到目前为止所得到的:
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/
由于
答案 0 :(得分:1)
使用Array#unshift
在数组的开头添加元素
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>';