ėīë Īė ë ëķëķ ė ëĶŽ
- ėļė(accumulator, currentValue)ė íĻęŧ iterator íĻėëĨž íļėķíīėž íëĪ.
- ë°°ėī(collection)ė íëŠĐė ėžėŠ―ėė ėĪëĨļėŠ―ėžëĄ iteratorė ė ëŽíīėž íëĪ.
- iteratorę° undefinedëĨž ë°ííëëžë iteratorëĨž ęģė íļėķíīėž íëĪ.
- accumulatorę° ė ëŽëëĐī, ë°°ėīė ëŠĻë íëŠĐė iteratorė ė ëŽíīėž íëĪ.
- falsy valueë ė íĻí acumulatorëĄ ë°ėėž íëĪ.
- accumulatorę° ė ëŽëė§ ėėžëĐī, ë°°ėīė ėēŦ ëēė§ļ íëŠĐė accumulatorëĄ ėĪė íīėž íëĪ.
- accumulatorę° ė ëŽëė§ ėėžëĐī, ë°°ėīė ë ëēė§ļ íëŠĐė iteratorė ė ëŽíīėž íëĪ.
âŧ ėŽęļ°ė
iterator
ë reduce() ëĐėëėėė ė―ë°ą íĻė(ëĶŽëė íĻė)ëĨž ë§íëĪ.
_.reduce = function (collection, iterator, accumulator) {
if (accumulator !== 0 && accumulator === undefined) {
for (let i = 0; i < collection.length - 1; i++) {
if (i === 0) {
accumulator = iterator(collection[0], collection[1]); // 6, 7
continue;
}
accumulator = iterator(accumulator, collection[i + 1]); // 4
}
} else {
for (key in collection) {
accumulator = iterator(accumulator, collection[key]); // 4
}
}
return accumulator;
};
ėēėė else ėīíė ëķëķë collection[i]ëĄ ėėąíëĪę° ėīí contains íĻėėė ėëŽę° ë ė collection[key]
ëĄ ėė íëĪ.
- ëĪė°Ļė ë°°ėīė 1ė°Ļė ë°°ėīëĄ ëģííëĪ.
- 'ėëĄėī ë°°ėī'ė ëĪė°Ļė ë°°ėīė ëŠĻë ėėëĨž íŽíĻíīėž íëĪ.
_.flatten = function (nestedArray) {
let flattenedArray = [];
for (let i = 0; i < nestedArray.length; i++) {
if (!Array.isArray(nestedArray[i])) {
flattenedArray.push(nestedArray[i]);
} else {
const innerFlattedArray = _.flatten(nestedArray[i]);
flattenedArray.push(...innerFlattedArray);
}
}
return flattenedArray;
};
ex) nestedArray [ 1, [2], [3, [[[4]]]] ]
_.flatten([[[4]]])
ë [4]
ëĨž return íëĪ.
[3].push(4)
ė ėíī [3, 4]
ę° _.faltten([3, [[[4]]]])
ė ę°ėžëĄ return ëëĪ.
ðĄ console.logëĄ íėļíīëģīęļ°
_.flatten = function (nestedArray) { let flattenedArray = []; for (let i = 0; i < nestedArray.length; i++) { if (!Array.isArray(nestedArray[i])) { flattenedArray.push(nestedArray[i]); } else { const innerFlattedArray = _.flatten(nestedArray[i]); console.log(innerFlattedArray, "|", nestedArray[i]); console.log("ėīė flattenedArray", flattenedArray); flattenedArray.push(...innerFlattedArray); console.log("ėīí flattenedArray", flattenedArray); console.log("------------"); } } return flattenedArray; };