Итератор Java в JavaScript

231
25 января 2018, 18:58

Есть код на Java:

List<HashMap<String, String>> dc = (List<HashMap<String, String>>) request.getAttribute("DC");
  Iterator<HashMap<String, String>> dcIt = dc.iterator();
  while (dcIt.hasNext()) {
    HashMap<String, String> dcEntry = dcIt.next(); //код 
}

Мне нужно переписать логику на JS.
Как итератор переписать на JS?

Answer 1

В новой спецификации js есть такое понятие как итераторы
Для того что бы ваш объект умел в итераторы, нужно добавить ему специальный метод Symbol.iterator

'use strict';
const range = {
  from: 1,
  to: 5
}
// сделаем объект range итерируемым
range[Symbol.iterator] = function() {
  let current = this.from;
  const last = this.to;
  // метод должен вернуть объект с методом next()
  return {
    next() {
      if (current <= last) {
        return {
          done: false,
          value: current++
        };
      } else {
        return {
          done: true
        };
      }
    }
  }
};
for (let num of range) {
  alert(num); // 1, затем 2, 3, 4, 5
}

Почитать подробнее

Answer 2

Список превращается в массив, а словарь со строковыми ключами - в простой объект. Только объекты для словарей рекомендуется создавать через Object.create(null) в случае, если он поддерживается браузером.

var dcs = [{x: "a"}, {x: "b", y: "qqq", "мой ключ": "значение"}]; 
 
for (var dc of dcs) { 
  for (var key of Object.keys(dc)) { 
    console.log(`${key} => ${dc[key]}`); 
  } 
 
  console.log("==="); 
}

READ ALSO
Java Spring обработка больших объемов данных

Java Spring обработка больших объемов данных

Опишу задачу, прошу подсказки куда смотретьНадо обработать большое количество данных как можно быстрее и эффективнее

226
Java потоки и сокеты

Java потоки и сокеты

Существует клиент-серверное приложение в работе которого используются сокеты и с каждым сокетом создаётся новый поток, в который передаются...

173
Telegram bot sendMessage() is deprecated in java

Telegram bot sendMessage() is deprecated in java

Если этот метод уже deprecated, то как лучше отправлять сообщения клиенту?

208
Шаблоны в jQuery

Шаблоны в jQuery

Я когда то давно слышал, что в jQuery собираются встроить шаблоны (tmpl), чтобы не цеплять сторонние библиотекиНо этого, походу, не случилось

367