我有一个数组,比如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);
});
答案 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);