是否可以将值从数组映射到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"}
答案 0 :(得分:3)
如果关系是顺序,则可以使用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
循环中的顺序,但是请参见this,这两种方式中的顺序可能都不是联系事物的最佳方法。
答案 1 :(得分:1)
如果即使两个对象之间的关系可能不是顺序,也要映射,则可以这样:
for(let car of cars){
someObject[car.toUpperCase()] = car;
}
最终将修复对象中所有丢失的值。 另外,您还可以添加检查,以便仅对象中预先存在的值得到分配的值:
for(let car of cars){
if(someObject[car.toUpperCase()])
someObject[car.toUpperCase()] = car;
}