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.assign
与Array#map
和spread syntax ...
一起使用
var array = ['USD', 'EUR', 'INR'],
object = Object.assign(...array.map(k => ( [k]: 0 )));
console.log(object);
【讨论】:
我认为这缺少一个对象作为第一个参数?Object.assign(, ...a.map(k => ( [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:将数组转换为对象的最佳方法是啥? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
如何将 Java Map 转换为基本的 Javascript 对象?