是否可以将数组中的值添加到对象属性?
2018-09-02
84
是否可以将值从数组映射到 javascript 对象?
假设我们有这样的数组
var cars = ["Saab", "Volvo", "BMW"];
和一个对象
let someObject = {
SAAB: null,
VOLVO: null,
BMW: null
}
我想将值从数组映射到对象以像这样输出:
let someObject = {
SAAB: "Saab",
VOLVO: "Volvo",
BMW: "BMW"
}
我尝试了一些类似的方法,但失败了
for (let key of Object.entries(someObject)) {
for (let index = 0; index < cars.length; index++) {
key = cars[index];
}
}
此外,我尝试了这个解决方案,但不知何故我错过了一些东西,它只映射了最后一个值
for (var key in someObject) {
for (var car in cars) {
someObject[key] = cars[car]
}
}
console.log(someObject)
{SAAB: "BMW", VOLVO: "BMW", BMW: "BMW"}
2个回答
如果关系是顺序,则可以使用
for in
和
shift()
var cars = ["Saab", "Volvo", "BMW"];
let someObject = {
SAAB: null,
VOLVO: null,
BMW: null
}
for(let p in someObject){
someObject[p] = cars.shift()
}
console.log(someObject)
ECMAScript 规范不保证
For in
循环中的顺序,但请参阅
这个
,无论哪种方式,顺序可能都不是关联事物的最佳方式。
Emeeus
2018-09-02
如果您想要映射,即使两个对象之间的关系可能不是按顺序排列,您也可以这样做:
for(let car of cars){
someObject[car.toUpperCase()] = car;
}
这最终会修复对象中所有缺失的值。 您还可以添加检查,以便只有对象中预先存在的值才会被分配其值:
for(let car of cars){
if(someObject[car.toUpperCase()])
someObject[car.toUpperCase()] = car;
}
Gigi
2018-09-02