如何将数组转换为对象? [复制]

Posted

技术标签:

【中文标题】如何将数组转换为对象? [复制]【英文标题】:How can I convert an Array into a Object? [duplicate] 【发布时间】:2020-05-02 19:30:39 【问题描述】:

我有以下数组:

['2020-01-16', '2020-01-17', '2020-01-18']

我需要把上面的数组变成这样的对象:


    '2020-01-16': selected: true, marked: true, selectedColor: 'blue',
    '2020-01-17': selected: true, marked: true, selectedColor: 'blue',
    '2020-01-18': selected: true, marked: true, selectedColor: 'blue',

有什么办法可以做到吗?

【问题讨论】:

我认为这不可能。您可能需要使用 javascript 和循环将列表转换为对象。 使用 for 循环。例如:让结果 = ; array.forEach(element =>result[element] = selected: true, 标记: true, selectedColor: 'blue';);控制台日志(结果); 另外,请包括您研究过的内容。如果你还没有,我建议你下次这样做:)。 【参考方案1】:

使用.forEach() 遍历所有对象并构建您的对象。

var myKeys = ['2020-01-16', '2020-01-17', '2020-01-18'];
var myObject = ;

myKeys.forEach((key) => myObject[key] = 
    selected: true, 
    marked: true, 
    selectedColor: 'blue'
);

console.log(myObject);

您可能需要更改您要插入的特定数据的逻辑(对于 selected、marked、selectedColor),但这通常是最简单的方法。

【讨论】:

你和我都会得到它们 - OP 实际上没有尝试任何东西,或者没有提供不起作用的代码.. 我们只是继续回答他的问题。 ;) 别担心,我赞成你的两个问题,都很好!编辑:他们应该添加一个反对者和赞成者列表,只是为了方便哈哈。 哇 3 票反对。我不知道为什么。我个人更喜欢纯函数,但它没有错。 我和你在一起,@PaulRooney - 这就是为什么我更喜欢reduce() 而不是forEach()。但在这种情况下,它们都工作得很好。 另一种功能方式Object.fromEntries(input.map(i => [i, x])) 其中x 是公共参数对象。 Object.fromEntries 不过是一个相当新的功能。【参考方案2】:

我会使用reduce 来处理这个问题(documentation on reduce):

var arr = ['2020-01-16', '2020-01-17', '2020-01-18'];

arr.reduce(function(accumulator, val)
  accumulator[val] = selected: true, marked: true, selectedColor: 'blue';
  return accumulator;
, );

这将构建您的对象,因为它在数组上循环。我喜欢使用reduce 而不是forEach,如果可以的话

【讨论】:

【参考方案3】:

当然,使用Array.reduce(),这是一件非常简单的事情。 reduce 函数中的累加器只是一个空对象,每次通过 reduce 迭代,我们都会以该数组项的值作为属性名称创建一个新属性,并将对象字面量定义为该属性的值。

希望这会有所帮助!

const myArray = ['2020-01-16', '2020-01-17', '2020-01-18'];

const myObject = myArray.reduce( (obj, item) => 
  obj[item] = selected: true, marked: true, selectedColor: 'blue';
  return obj;
 , );
 
 console.log(JSON.stringify(myObject) );

【讨论】:

noice,他选择你哈哈 运气好。有一个有效的例子总是有帮助的。有点像狙击手,ebay 的旧时光。罗夫 是的,这个答案比我的 XD 早几秒钟我没有让我的一个 sn-p。 w/e 大声笑。 非常具有战略意义... 这篇文章正在变成聊天室...

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

如何将逗号分隔的字符串转换为数组? [复制]

将布尔对象数组转换为布尔原始数组? [复制]

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

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

在 Java 中,如何将 InputStream 转换为字节数组 (byte[])? [复制]

将整数对象的 ArrayList 转换为 int 数组? [复制]