Перебирать атрибуты, но выводить только определенные - javascript - PullRequest
0 голосов
/ 16 октября 2018

Я не знаю много о js, но у меня есть код, который с небольшой модификацией будет делать именно то, что я хочу.Так вот часть этого, что я застрял.У меня есть несколько визуальных объектов, которые имеют несколько атрибутов, большинство из этих атрибутов необходимы для их рисования на карте, поэтому я не могу просто comment их вывести.У меня также есть функция, которая печатает все атрибуты объекта on("mouseover").Я хочу, чтобы он отображал только те атрибуты, которые мне нужны, а не все.

.on("mouseover", function(d) {
    var out = "";
    out += d.name + "<br /><br />";
    for (v in d) {
      out += (!Number.isNaN(Number(d[v])) ? v + ": " + Number(d[v]) + "<br />" : "");
    }
    document.getElementById("detail").innerHTML = out;
  }

Я понимаю, что делает этот код, но каков самый элегантный способ ограничения цикла for или out навключать только те атрибуты, которые я хочу?

Текущий результат

obj name

attrIwant1: value
attrIwant2: value
attrIwant3: value
attrIwant4: value
w: blah
x: blah
y: blah
z: blah

Я хочу отображать только до w:blah.

Ответы [ 2 ]

0 голосов
/ 16 октября 2018

Если вы всегда ожидаете одинаковое количество атрибутов, вы можете завершить цикл раньше, когда out содержит определенное количество <br />.

В вашем примере вы хотите остановить, когдау вас есть 4 атрибута, поэтому вы можете завершить цикл, когда out содержит 6 <br />.Ваш новый цикл for будет таким:

for (v in d) {
  out += (!Number.isNaN(Number(d[v])) ? v + ": " + Number(d[v]) + "<br />" : "");
  if (out.match(/<br \/>/g).length === 6) break;
}

Это не "элегантно", но, вероятно, это лучшее, что вы получите, не сказав мне, что такое d: ^)

0 голосов
/ 16 октября 2018

Поместите атрибуты, которые вам интересны, в набор, затем при цикле посмотрите, принадлежит ли d[v] к набору.

const set1 = new Set(['attrIWant1', 'attrIWant2']); // add the attributes here
for (v in d) {
  if (set1.has(d[v])) {
    // this is one we care about
  }
}

Подробнее о наборах здесь: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set

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