JavaScript индексирование объекта - много значений на один ключ - PullRequest
0 голосов
/ 06 августа 2020

Проблема: в моем скрипте я должен сгенерировать один и тот же фрагмент кода из нескольких элементов. Я хочу sh использовать словарь для хранения пар ключ: значение и перебирать их. Каждый ключ имеет несколько связанных значений.

let obj = {
    key1: ["val1", "val2", "val3"],
    key2: ["val4", "val5", "val6"]};

В моем скрипте я хочу использовать отдельные значения, например:

//Key1
some code ${val1}
some other code ${val2}
....
//Key2
some code ${val4}
some other code ${val5}
....

Я не могу найти способ доступа к отдельным значениям вместо массива, связанного с ключом. Я пробовал "индексировать" $ {obj [key] [0], но это, конечно, не работает.

Object.keys(obj).forEach((key, index) => {
    console.log(`Log the key here: ${obj[key]}!`)
})

Ответы [ 3 ]

2 голосов
/ 06 августа 2020

Для перебора всех значений вы можете сделать что-то вроде этого.

for..in loop для итерации объекта и

for..of loop для итерации массива , связанного с каждым ключом объекта

let obj = {
  key1: ["val1", "val2", "val3"],
  key2: ["val4", "val5", "val6"]};


  for(const x in obj){
     for(const y of obj[x]) {
      console.log(`Log the key here: ${y}!`)
    }
  }
1 голос
/ 06 августа 2020

Другой вариант:

Итак, с Object.entries мы получаем ключ и значение из объекта, выполняем итерацию и получаем значения.

let obj = {
    key1: ["val1", "val2", "val3"],
    key2: ["val4", "val5", "val6"]
};

Object.entries(obj).forEach(([key, values]) => {
  values.forEach((value) => {
      console.log(`some code ${key}:${value}`)
  })
})
1 голос
/ 06 августа 2020

Если вы хотите проиндексировать объект, который вы определяете в своем примере, вот как вы можете извлечь значения 'val1' и 'val2'.

let obj = {
    key1: ["val1", "val2", "val3"],
    key2: ["val4", "val5", "val6"]};

var v1 = obj['key1'][0];
var v2 = obj['key1'][1];

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