JSFiddle - React, Tailwind, and code Playground

by Dmitry Kostenko

JavaScript

/*
1. Читаем:
		* https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach
		* https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map
		* https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find
		*( для желающих ) https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce	
2. Пишем свои, не использующие внутри вышеуказанные ф-ции, аналоги, с единственным отличием: если нативный, к примеру, forEach используется
arr.forEach( fn ), то вы пишете function forEach( arr, fn ){}. Тоесть все ваши аналоги будут иметь на один аргумент больше( первый аргумент arr )
*/
/******************************************************************************/
var arr = [4, 5, 10];

function forEach( arr, fn ){
  for (let i = 0; i < arr.length; i++) {
    fn(arr[i], arr, i);
  }
}

//forEach( arr, multiplies)
/******************************************************************************/

function map( arr, fn ){
	var array = []; 
  for (let i = 0; i < arr.length; i++) {
    array[i] = fn(arr[i], i, arr);
    console.log(array[i])
  }
  console.log(array)
 	return array
}

map( arr, function(item, i){
	if(i%2 === 0) {
 		return item*2 
  }
  return item
})


/******************************************************************************/

function find(arr, func){
	for (let i = 0; i < arr.length; i++) {
    if (func(arr[i],i,arr) === true)
    return arr[i];
  }
};

function more8(item) {
	return item>8;
}
//find(arr, more8)


function filter (arr, func) {

  if ( typeof func !== "function" ) return [];

  if( !Array.isArray( arr ) ){
    return [];
  }

  var newArr = [];

  for(var i = 0; i<arr.length;i++) {
    if (func(arr[i], i, arr)===true) {
      newArr.push(arr[i]);
    }
  }

  return newArr;
}

filter(arr, function (item, i) {
  return item%2 === 0;
});

//console.log(filter(arr,function(item,i) {return (item%2 === 0);}))

function...