我经常遇到这个问题而且我厌倦了编写转换函数
我能做到
function toObject(arr) {
var rv = {};
for (var i = 0; i < arr.length; ++i)
rv[i] = arr[i];
return rv;
}
但那是否有捷径?我的情况如下:
angular.forEach($scope.data, function(item){
if(thread.checked === true){
var links = item.url;
chrome.tabs.create(links, function(tab) {
});
}
});
我正在使用chrome API,其中链接是obj:
chrome.tabs.create(obj, function(tab) {
});
答案 0 :(得分:0)
在ES5浏览器中,您可以执行以下操作:
var obj = {};
[0,1,2].forEach(function(v, i){obj[i] = v});
或
[0,1,2].forEach(function(v, i, arr){this[i] = v}, obj);
作为一项功能:
function toObj(arr) {
var obj = {};
arr.forEach(function(v, i){obj[i] = v});
return obj;
}
如果传入的对象可能不是数组,而是属性为0到n的对象,则:
function toObj(arr) {
var obj = {};
[].forEach.call(arr, function(v, i){obj[i] = v});
return obj;
}