Можно ли добавить значения из массива в свойства объекта? - PullRequest
0 голосов
/ 02 сентября 2018

Возможно ли отобразить значения из массива в объект 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 ]

0 голосов
/ 02 сентября 2018

Если вы хотите отобразить, даже если отношения между двумя объектами могут не соответствовать порядку, вы можете сделать что-то вроде этого:

for(let car of cars){
someObject[car.toUpperCase()] = car;
}

Что в конечном итоге исправляет любые пропущенные значения в объекте. Также вы можете добавить проверку, чтобы только ранее существующим значениям в объекте было присвоено их значение:

for(let car of cars){
if(someObject[car.toUpperCase()])
    someObject[car.toUpperCase()] = car;
} 
0 голосов
/ 02 сентября 2018

Если отношение является порядком, вы можете использовать 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)

Порядок в цикле For in не гарантируется спецификацией ECMAScript, но смотрите this , в любом случае порядок, вероятно, не лучший способ связать вещи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...