【问题标题】:How do i assign key / value pairs of an array of strings如何分配字符串数组的键/值对
【发布时间】:2022-07-06 00:55:09
【问题描述】:
let arr = ['drink', 'soda', 'name', 'john', 'someKey', 'someValue']

我想为上面数组中的字符串分配键值对

例如:

[{drink: 'soda'},
 {name: 'john'},
 {someKey:'someValue'}
]

我花了好几个小时试图解决这个问题...我尝试使用 map 方法来解决它,但我对 javascript 的有限知识一直在返回错误...

如果有人可以帮助我,我将不胜感激。谢谢

【问题讨论】:

  • 使用“老式”for循环并每次将迭代器递增2可能是最简单的。
  • 你真的想要 [{drink: 'soda'}, {name: 'john'}, {someKey:'someValue'}] 作为数组中的三个独立对象,还是想要一个具有所有这些属性的单个对象,如 { drink: 'soda', name: 'john', someKey: 'someValue' }

标签: javascript arrays object key-value


【解决方案1】:

你可以用一个简单的 for 循环来做到这一点:

let arr = ['drink', 'soda', 'name', 'john', 'someKey', 'someValue'];

let result = [];

for(let i = 0; i < arr.length; i+=2) {
  let obj = {}
  obj[arr[i]] = arr[i+1];
  result.push(obj)
}
console.log(result)

【讨论】:

  • 有没有办法使用 map 方法实现这一点?
  • 虽然map 的回调确实有一个索引参数,但你不能像使用这种循环那样增加它,这会阻止你得到你想要的结果。 @月亮
  • 哦,对了,因为我必须将 i 增加 2。非常感谢
【解决方案2】:

simple old-school loop 在每次迭代中将步长增加 2。

注意:这将为您提供一个带有键/值对的单个对象,这使得(在我看来)比每个带有一个键/值对的对象数组更好的数据结构。如果您正在寻找一组对象,@sonEtLumiere 的答案是正确的。

const arr = ['drink', 'soda', 'name', 'john', 'someKey', 'someValue'];

const out = {};

for (let i = 0; i < arr.length; i += 2) {
  out[arr[i]] = arr[i + 1];
}

console.log(out);
console.log(out.drink);
console.log(out.name);
console.log(out.someKey);

【讨论】:

  • 谢谢安迪。
  • 与问题中提供的预期输出不完全匹配。
【解决方案3】:

这将是最简单的方法:

const arr = ['drink', 'soda', 'name', 'john', 'someKey', 'someValue']

const obj = {}
for (let i = 0; i < arr.length; i += 2) {
  obj[arr[i]] = arr[i + 1]
}

console.log(obj)

【讨论】:

    猜你喜欢
    • 2021-05-21
    • 1970-01-01
    • 1970-01-01
    • 2021-08-15
    • 1970-01-01
    • 2021-10-13
    • 2015-08-06
    • 2011-10-23
    • 1970-01-01
    相关资源
    最近更新 更多