Несколько ключей для одного объекта

138
12 апреля 2022, 14:20

Мне необходимо связать несколько ключей с одним объектом. Например, у меня есть такой код:

var obj = {
  1 : "class1",
  2 : "class1",
  3 : "class2",
  4 : "class2",
  5 : "class3",
  6 : "class3",
  7 : "class4",
  ...
  n : "classn",
}; 

И мне необходимо не маленькому кол-ву див присвоить классы, согласно индексу. Делаю я это в jquery, вот так:

$('.container div').each(function(i) {
  $(this).addClass(obj[i]);
});

Все работает хорошо, но у меня таких див будет десятки.. И представьте для каждого дива писать его индекс и класс внутри obj это как-то немного не разумно.

В коде, что выше, каждому ключу присвоены объекты. А мне нужно наоборот.. Для одного объекта несколько ключей. Что-то вроде такого:

var obj = {
  1, 2 : "class1",
  3, 4 : "class2",
  5, 6 : "class3",
  7, 8, 9, 10 : "class4",
  ...
  n, n2 : "classn",
};

Но так не работает, и не будет. Подскажите, пожалуйста, как мне сделать что ни будь подобное, что бы не плодить строчки для каждого ключа. Т.е. мне нужно одному объекту присвоить несколько ключей. Как это можно сделать? Спасибо! Мне это очень нужно..

Answer 1

Вы можете попробовать сделать наоборот:

const obj = {
  "class1": [1, 2, 3, 4],
  "class2": [5, 6, 7],
  "class3": [8, 9, 10]
}
const objKeys = Object.keys(obj),
  objValues = Object.values(obj);
const nodes = document.querySelectorAll('.container div');
for (var i = 0; i < nodes.length; i++) {
  let index = objValues.findIndex(ids => ids.indexOf(i + 1) > -1)
  if (index > -1) {
    nodes[i].classList.add(objKeys[index]);
  }
}
Answer 2

var obj0 = {
  class1: [1, 2],
  class2: [3, 4],
  class3: [5, 6],
  class4: [7, 8, 9, 10],
}
var obj = {}
for (var [c, a] of Object.entries(obj0)) {
  for (var i of a) {
    obj[i] = c
  }
}
console.log(obj)
.as-console-wrapper.as-console-wrapper { max-height: 100vh }

READ ALSO
Php Форма и Select Option

Php Форма и Select Option

Подскажите пожалуйста как можно отправить(submit) Php форму с селектором(select) который при выборе значения(option и value) включает определенный Div с разными...

199
Динамический ID

Динамический ID

Есть форма, которая вызывается на странице несколько разХочется чтобы у нее изменялся id по типу id="form+'i' ", где i увеличивается на один...

174
Не подключаются кастомные шрифты на GitHub Pages

Не подключаются кастомные шрифты на GitHub Pages

Ссылка на репозиторий: https://githubcom/bergdev/bergdev

219
Какой пакет нужен в atom&#39;е, например чтобы после &lt;head&gt; он автоматически ставил &lt;/head&gt;?

Какой пакет нужен в atom'е, например чтобы после <head> он автоматически ставил </head>?

Очень не удобно без такого, поэтому временно на sublim'e

103