在我的情况下将数组转换为对象的方法

时间:2014-06-26 03:44:02

标签: javascript google-chrome-extension

我经常遇到这个问题而且我厌倦了编写转换函数

我能做到

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

});

1 个答案:

答案 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;
}