Symbol.iterator в ES6

211
05 мая 2017, 18:45

Где-то еще кроме for..of и spread применяется кастомный итератор?

let arr = [1,2,3,4,5]; 
 
//итератор массива в обратном порядке 
arr[Symbol.iterator] = function() { 
	let currIndex = this.length; 
   
  const that = this; 
   
  return { 
  	next() { 
    	if (currIndex !== 0) { 
      	return { 
        	done: false, 
          value: that[--currIndex] 
        } 
      } else { 
        return { 
        	done: true 
        } 
      } 
    } 
  } 
} 
 
console.info('reduce'); 
const all = arr.reduce((tot, next) => { 
	return tot += next + ','; 
}, ''); 
console.log(all.slice(0,-1)); 
 
console.info('for..of'); 
let result = ''; 
for (let el of arr) { 
	result += el + ','; 
} 
console.log(result.slice(0, -1)); 
 
console.info('forEach'); 
result = ''; 
arr.forEach(el => result += el + ','); 
console.log(result.slice(0, -1)); 
 
console.info('map'); 
console.log(arr.map(el => el).join(',')) 
 
console.info('spread'); 
console.log([...arr].join(','));

Answer 1

Вообще, он предназначен для for..of. Этого достаточно.

Где ещё? В Array.from вот тоже используется.

let arr = [1, 2, 3, 4, 5]; 
 
//итератор массива в обратном порядке 
arr[Symbol.iterator] = function() { 
  let i = this.length; 
  return { 
    next: () => i ?  
      {done: false, value: this[--i]} :  
      {done: true} 
  } 
} 
 
console.info('Array.from'); 
console.log(Array.from(arr).join(',')); 
 
console.info('for..of'); 
let result = ''; 
for (let el of arr) { 
  result += el + ','; 
} 
console.log(result.slice(0, -1)); 
 
console.info('spread'); 
console.log([...arr].join(','));

READ ALSO
Wordpress. Скрипты подключились но не работают

Wordpress. Скрипты подключились но не работают

Доброго времени сутокПроблема моя заключается в том, что скрипты которые я подключил в файле functions

278
PHP Include Javascript

PHP Include Javascript

Здравствуйте, я решил через массив сделать подключить на HTML сайт JS скриптыВот мой код: aengines

214
bootstrap боковое меню

bootstrap боковое меню

Решил написать всплывающую/скрывающаяся боковое меню с использованием bootstrap

350
Drag&Drop HTML5 скрыть исходный слемент

Drag&Drop HTML5 скрыть исходный слемент

при использовании Drag&Drop HTML5 , при перетаскивании , появляется "дубликат", который двигаетсяА как при этом скрыть исходный элемент? т

194