【问题标题】:Javascript: Whats the best way Convert Array into Object? [duplicate]Javascript:将数组转换为对象的最佳方法是什么? [复制]
【发布时间】:2017-06-09 04:23:25
【问题描述】:

什么是最好的转换方式:

a = ['USD', 'EUR', 'INR']

a = {'USD': 0, 'EUR': 0, 'INR': 0};

*将数组元素作为初始值为0的对象的键。

【问题讨论】:

  • 定义“最佳”。最短的代码?最棒的表演?吹毛求疵的机会最少?
  • 这真的没有足够的信息继续下去。为什么不能手动执行此操作,这是程序数据吗,是否要为对象中的每个变量分配一致的值等等。
  • 我认为this answerthis answer 适合你
  • @deceze 在短代码和性能方面都在寻找。但主要强调的是使用最佳操作函数(对于这种情况)。

标签: javascript arrays object


【解决方案1】:

使用Array#reduce 方法缩减为单个对象。

a = ['USD', 'EUR', 'INR'];

console.log(
  a.reduce(function(obj, v) {
    obj[v] = 0;
    return obj;
  }, {})
)

甚至简单的for循环也可以。

var a = ['USD', 'EUR', 'INR'];
var res = {};

for (var i = 0; i < a.length; i++)
  res[a[i]] = 0;

console.log(res);

【讨论】:

    【解决方案2】:

    您可以将Object.assignArray#mapspread syntax ... 一起使用

    var array = ['USD', 'EUR', 'INR'],
        object = Object.assign(...array.map(k => ({ [k]: 0 })));
    
    console.log(object);

    【讨论】:

    • 我认为这缺少一个对象作为第一个参数? Object.assign({}, ...a.map(k =&gt; ({ [k]: 0 })))
    【解决方案3】:

    您可以使用Array.mapObject.assign

    var a = ['USD', 'EUR', 'INR']
    var result = Object.assign.apply(null, a.map(x =>({[x]:0})));
    console.log(result)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-19
      • 1970-01-01
      • 1970-01-01
      • 2011-09-04
      • 1970-01-01
      • 2023-03-23
      相关资源
      最近更新 更多