将数组转换为类数组对象

时间:2016-10-14 15:26:04

标签: javascript arrays javascript-objects

我有一个数组,比如Array.prototype.slice.call

我是否缺少任何将数组转换为类似数组的对象的本机方法?我已经看到很多答案询问另一个方向,并推荐Array.from(或更新的{ 0: { id: 'first' } 1: { id: 'second' } } ),但我无法找到有人问这个问题。对于上面的示例,我想获得以下输出:

$.ajax({
        url: '/api/controller/action',
        type: "POST",
        data: {name: variable}
    }).done((data) => {
        successCallBack(data);
    }).fail((response) => {
        failureCallBack(response);
    });

3 个答案:

答案 0 :(得分:4)

减少它

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上的文档

答案 1 :(得分:1)

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

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

console.log(set)

答案 2 :(得分:0)

不是本机方法,但是下面的辅助函数应该可以解决这个问题:

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);