将数组转换为类数组对象

Convert array to array-like object

本文关键字:数组 对象 转换      更新时间:2023-09-26

我有一个数组,比如[{ id: 'first' }, { id: 'second' }]

是否有任何本地方法,我错过了,将数组转换成一个类似数组的对象?我已经看到了很多关于其他方向的答案,并推荐Array.prototype.slice.call(或更新的Array.from),但我找不到任何人问这个。对于上面的示例,我希望得到以下输出:

{
  0: { id: 'first' }
  1: { id: 'second' }
}

减少

var array = [{ id: 'first' }, { id: 'second' }];
var obj   = array.reduce( (a,b,i) =>  {return a[i]=b,a},{})
console.log(obj)

查看MDN (Mozilla Developer Network)上Array.reduce的文档

您可以只遍历array并将值添加到相应的索引中

var arr = [{ id: 'first' }, { id: 'second' }];
var set = {};
arr.forEach(function(value, index){
    set[index] = value; 
})
console.log(set)

不是本地方法,但是下面的帮助函数应该可以完成这个任务:

var arr = [{ id: 'first' }, { id: 'second' }];
function toArrayLike(arrayToConvert) {
    var retVal = {};
    Object.keys(arrayToConvert).forEach(function(key) {
        retVal[key] = arrayToConvert[key];
    });
    return retVal
}
var arrayLike = toArrayLike(arr);
console.log(arrayLike);