【问题标题】:Create object from two arrays从两个数组创建对象
【发布时间】:2014-09-22 03:18:38
【问题描述】:

如何在不使用 javascript 循环的情况下从两个数组创建对象。

示例:

array1 =  [1,2,3,4,5];
array2 = [A,B,C,D,E];

我想从下面的对象

obj = {
'1': 'A',
'2': 'B',
'3': 'C',
'4': 'D',
'5': 'E',
}

提前致谢

【问题讨论】:

标签: javascript jquery


【解决方案1】:

尝试使用$.each() 迭代其中一个数组并根据您的要求构造对象,

var array1 = [1,2,3,4,5],array2 = ['A','B','C','D','E'];
var obj = {};

$.each(array2,function(i,val){
  obj[array1[i]] = val;
});

DEMO

【讨论】:

  • $.each() 不再是循环 :)?
  • map 本质上也是一个循环,但无论如何:p
【解决方案2】:

var obj = {}

array1 = [1, 2, 3, 4, 5];
array2 = ['A', 'B', 'C', 'D', 'E'];

array1.forEach(function(value, index) {

  obj[value] = array2[index];

});

console.log(obj);

【讨论】:

  • Uncaught ReferenceError: A is not defined
【解决方案3】:

一个 ES6,数组缩减解决方案。

const array1 = [1, 2, 3, 4, 5];
const array2 = ['A', 'B', 'C', 'D', 'E'];
const resultMap = array1.reduce(
  (accumulator, value, index) => Object.assign(accumulator, {
    [value]: array2[index],
  }), {}
);

console.log(resultMap);

【讨论】:

    【解决方案4】:

    只是为了好玩而没有使用任何迭代方法。

    const array1 =  [1,2,3,4,5];
    const array2 = ['A','B','C','D','E'];
    let combineKeyValueProxy = new Proxy({}, {
        set: function(target, prop, value, receiver) {
           target[array1[prop]] = value;
           return true
        }
    });
    const output = Object.assign(combineKeyValueProxy, array2);
    console.log(output) // Proxy {1: "A", 2: "B", 3: "C", 4: "D", 5: "E"}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-30
      • 1970-01-01
      • 1970-01-01
      • 2020-12-06
      相关资源
      最近更新 更多