Javascript:将数组转换为对象的最佳方法是啥? [复制]

Posted

技术标签:

【中文标题】Javascript:将数组转换为对象的最佳方法是啥? [复制]【英文标题】: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的对象的键。

【问题讨论】:

定义“最佳”。最短的代码?最棒的表演?吹毛求疵的机会最少? 这真的没有足够的信息继续下去。为什么不能手动执行此操作,这是程序数据吗,是否要为对象中的每个变量分配一致的值等等。 ***.com/questions/4215737/convert-array-to-object 我认为this answer 和this answer 适合你 @deceze 在短代码和性能方面都在寻找。但主要强调的是使用最佳操作函数(对于这种情况)。 【参考方案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#map 和spread 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.map 和Object.assign

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

【讨论】:

以上是关于Javascript:将数组转换为对象的最佳方法是啥? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

将数组从 JavaScript 传递到 C# 的最佳方法?

将json字符串转换为对象数组的最佳方法是啥? [复制]

将嵌套对象数组转换为对象数组的最佳方法

如何将 Java Map 转换为基本的 Javascript 对象?

使用map方法将javascript对象数组转换为其他对象数组[重复]

将 SymPy 矩阵转换为 numpy 数组/矩阵的最佳方法是啥