|
| 1 | +// @ts-check |
| 2 | + |
| 3 | +const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]; |
| 4 | + |
| 5 | +//* ********* using for..of loop |
| 6 | +for (const n of numbers) { |
| 7 | + console.log(`for..of loop: ${n} % 2 === 0`, n % 2 === 0 ? 'even' : 'odd'); |
| 8 | +} |
| 9 | + |
| 10 | +//* ********* Using the new ES6 iterator (@@iterator) |
| 11 | +console.log('Using the new ES6 iterator (@@iterator)'); |
| 12 | + |
| 13 | +let iterator = numbers[Symbol.iterator](); |
| 14 | +console.log('iterator.next().value', iterator.next().value); // 1 |
| 15 | +console.log('iterator.next().value', iterator.next().value); // 2 |
| 16 | +console.log('iterator.next().value', iterator.next().value); // 3 |
| 17 | +console.log('iterator.next().value', iterator.next().value); // 4 |
| 18 | +console.log('iterator.next().value', iterator.next().value); // 5 |
| 19 | + |
| 20 | +// or use code below |
| 21 | +iterator = numbers[Symbol.iterator](); |
| 22 | +for (const n of iterator) { |
| 23 | + console.log(`${n} of iterator`, n); |
| 24 | +} |
| 25 | + |
| 26 | +//* ********* Array entries, keys and values |
| 27 | +console.log('Array entries, keys and values'); |
| 28 | + |
| 29 | +console.log('Array.entries'); |
| 30 | +let aEntries = numbers.entries(); // retrieve iterator of key/value |
| 31 | +console.log('aEntries.next().value', aEntries.next().value); // [0, 1] - position 0, value 1 |
| 32 | +console.log('aEntries.next().value', aEntries.next().value); // [1, 2] - position 1, value 2 |
| 33 | +console.log('aEntries.next().value', aEntries.next().value); // [2, 3] - position 2, value 3 |
| 34 | + |
| 35 | +// or use code below |
| 36 | +aEntries = numbers.entries(); |
| 37 | +for (const n of aEntries) { |
| 38 | + console.log(`entry of ${n}`, n); |
| 39 | +} |
| 40 | + |
| 41 | +console.log('Array.keys'); |
| 42 | +const aKeys = numbers.keys(); // retrieve iterator of keys |
| 43 | +console.log('aKeys.next()', aKeys.next()); // {value: 0, done: false } done false means iterator has more values |
| 44 | +console.log('aKeys.next()', aKeys.next()); // {value: 1, done: false } |
| 45 | +console.log('aKeys.next()', aKeys.next()); // {value: 2, done: false } |
| 46 | + |
| 47 | +console.log('Array.values - Only Edge and Safari - Oct 2017'); |
| 48 | +// const aValues = numbers.values(); |
| 49 | +// console.log(aValues.next()); // {value: 1, done: false } done false means iterator has more values |
| 50 | +// console.log(aValues.next()); // {value: 2, done: false } |
| 51 | +// console.log(aValues.next()); // {value: 3, done: false } |
| 52 | + |
| 53 | +//* ********* Using the from method |
| 54 | +console.log('Using the from method'); |
| 55 | + |
| 56 | +const evens = Array.from(numbers, x => x % 2 === 0); |
| 57 | +console.log('Array.from(numbers, x => x % 2 === 0)', evens); |
| 58 | + |
| 59 | +const numbers2 = Array.from(numbers); |
| 60 | +console.log('Array.from(numbers)', numbers2); |
| 61 | + |
| 62 | +//* ********* Using Array.of |
| 63 | +console.log('Using Array.of'); |
| 64 | + |
| 65 | +const numbers3 = Array.of(1); |
| 66 | +const numbers4 = Array.of(1, 2, 3, 4, 5, 6); |
| 67 | +const numbersCopy = Array.of(...numbers4); |
| 68 | +console.log('Array.of(1)', numbers3); |
| 69 | +console.log('Array.of(1, 2, 3, 4, 5, 6)', numbers4); |
| 70 | +console.log('Array.of(...numbers4)', numbersCopy); |
| 71 | + |
| 72 | +//* ********* Using the fill method |
| 73 | +console.log('Using the fill method'); |
| 74 | + |
| 75 | +numbersCopy.fill(0); |
| 76 | +console.log('numbersCopy.fill(0)', numbersCopy); |
| 77 | + |
| 78 | +numbersCopy.fill(2, 1); |
| 79 | +console.log('numbersCopy.fill(2, 1)', numbersCopy); |
| 80 | + |
| 81 | +numbersCopy.fill(1, 3, 5); |
| 82 | +console.log('numbersCopy.fill(1, 3, 5)', numbersCopy); |
| 83 | + |
| 84 | +const ones = Array(6).fill(1); |
| 85 | +console.log('Array(6).fill(1)', ones); |
| 86 | + |
| 87 | +//* ********* Using the copyWithin method |
| 88 | +console.log('Using the copyWithin method'); |
| 89 | + |
| 90 | +let copyArray = [1, 2, 3, 4, 5, 6]; |
| 91 | +console.log('copyArray', copyArray); |
| 92 | + |
| 93 | +copyArray = copyArray.copyWithin(0, 3); // pos 3 value is copied to pos 0 |
| 94 | +console.log('copyArray.copyWithin(0, 3)', copyArray); |
| 95 | + |
| 96 | +copyArray = [1, 2, 3, 4, 5, 6]; |
| 97 | +copyArray = copyArray.copyWithin(1, 3, 5); // pos 3-4 values are copied to pos 1-2 |
| 98 | +console.log('copyArray.copyWithin(1, 3, 5)', copyArray); |
| 99 | + |
| 100 | +//* ********* methods find and findIndex |
| 101 | +console.log('methods find and findIndex'); |
| 102 | + |
| 103 | +function multipleOf13(element) { |
| 104 | + return element % 13 === 0; |
| 105 | +} |
| 106 | + |
| 107 | +console.log('numbers.find(multipleOf13)', numbers.find(multipleOf13)); |
| 108 | +console.log('numbers.findIndex(multipleOf13)', numbers.findIndex(multipleOf13)); |
| 109 | + |
| 110 | +//* ********* EcmaScript 2016 (ES7): using the method includes |
| 111 | +console.log('EcmaScript 2016 (ES7): using the method includes'); |
| 112 | + |
| 113 | +console.log('numbers.includes(15)', numbers.includes(15)); |
| 114 | +console.log('numbers.includes(20)', numbers.includes(20)); |
| 115 | + |
| 116 | +const numbers5 = [7, 6, 5, 4, 3, 2, 1]; |
| 117 | +console.log('numbers5.includes(4, 5)', numbers5.includes(4, 5)); |
0 commit comments