Javascript: 将数组转换为对象的最佳方法是什么?

12 浏览
0 Comments

Javascript: 将数组转换为对象的最佳方法是什么?

将数组元素作为对象的键,并将值初始设为0,最佳的转换方法是什么?

0
0 Comments

在JavaScript中,将数组转换为对象的最佳方法是使用Array.map和Object.assign。下面是一个示例代码:

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

这段代码中,我们首先定义了一个数组a,包含了三个元素:'USD'、'EUR'和'INR'。然后,我们使用Array.map方法对数组a进行映射转换,将每个元素都转换为一个对象,对象的属性名为数组元素的值,属性值为0。这样,我们得到了一个包含了三个对象的新数组。

接下来,我们使用Object.assign方法将新数组中的三个对象合并成一个对象。Object.assign方法接受多个参数,第一个参数为目标对象,后面的参数为源对象。由于我们希望将所有源对象合并到一个目标对象中,所以我们需要使用apply方法将源对象数组作为参数传递给Object.assign方法。

最后,我们将合并后的结果对象输出到控制台。

通过使用Array.map和Object.assign方法,我们可以很方便地将数组转换为对象。这种方法简洁高效,可以应对各种场景下的需求。

0
0 Comments

问题的原因是将数组转换为对象时,需要使用Object.assign方法,但是在使用该方法时,需要传入一个空对象作为第一个参数。解决方法是在使用Object.assign方法时,添加一个空对象作为第一个参数。

以下是整理后的

通过使用Object.assign方法和Array的map方法以及spread语法...,可以将数组转换为对象。

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

上述代码中,将一个包含三个元素的数组['USD', 'EUR', 'INR']转换为一个对象。使用map方法遍历数组,将每个元素作为键名,值为0,然后使用spread语法将这些对象合并为一个新的对象。最后,使用Object.assign方法将新对象赋值给变量object。

然而,上述代码可能会出现一个问题,即缺少一个对象作为Object.assign方法的第一个参数。为了解决这个问题,可以在Object.assign方法中添加一个空对象作为第一个参数。

Object.assign({}, ...a.map(k => ({ [k]: 0 })))

通过添加空对象作为第一个参数,可以确保Object.assign方法将返回一个新的对象,而不会修改现有的对象。

通过以上的方法,可以将数组转换为对象,并且确保代码的准确性和可靠性。

0
0 Comments

问题:如何将数组转换为对象?

问题的原因:需要将一个数组转换为对象,数组中的元素作为对象的属性,属性值为固定的值。

解决方法:可以使用reduce方法或for循环来实现。

使用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);

以上两种方法都可以将数组转换为对象,对象的属性为数组中的元素,属性值为固定的值。

0