jsの配列APIのアプリケーション

36309 ワード

平準化n次元配列
 //  ES10    flat    
 /*
              
                    ,                           。
*/
 [1,2,[3,4]].flat(2);  // [1,2,3,4]
 [1,2,[3,4,[5,6]]].flat(2); //[1,2,3,4,5,6];
[1,2,[3,4,[5,6,[7,8,....]]].flat(Infinity); //[1,2,3,4,5,6,7,8....];  Infinity        

//js    
function flatten(arr){
	if(!Array.isArray(arr)) return arr;
		while(arr.some(item => Array.isArray(item))){
			//arr = [].concat.apply([],arr);
			arr = [].concat(...arr);
		}
		return arr;
}
console.log(flatten([1,2,[3,4]]));//[1,2,3,4]
console.log(flatten([1,2,[3,4,[5,6]]]));[1,2,3,4,5,6]

//         ,      
 [1,2,[3,4].toString().split(",").map(item => Number(item));  //[1,2,3,4]
  [1,2,[3,4].toString().split(",").map(item => +item);   //[1,2,3,4]
  //            
配列
  //  Set                   
  Array.from(new Set([1,1,2,2,3,3]));  //[1,2,3]
  //Array.from                   
 
 //   
 [...new Set([1,1,2,2,3,3])] ; // [1,2,3]
配列の並べ替え
// sort   js             
[1,2,4,3,6].sort(); //[1,2,3,4,6]
[1,2,4,3,5].sort((a,b) => b-a); [5,4,3,2,1]

//    
Array.prototype.bubbleSort = function(){
	let arr = this,
	len = arr.length;
	for(let outer = len; outer >=2; outer--){
		for(let inner = 0; inner <=outer-1; inner++){
			if(arr[inner] > arr[inner+1]){
				[arr[inner], arr[inner+1]] = [arr[inner+1], arr[inner]];
			}
		}
	}
	return arr;
}

//    
Array.prototype.selectSort = function(){
	var arr = this,
		len = arr.length;
		for(let i =0; i<len; i++){
			for(let j =i; j<len; j++){
				if(arr[i] > arr[j]){
					[arr[i], arr[j]] =[arr[j], arr[i]];
				}
			}
		}
		return arr;
}
console.log([1,2,5,2,1,3].bubbleSort());  //[1,1,2,2,3,5]
console.log([1,2,5,2,1,3].selectSort());   //[1,1,2,2,3,5]
最大値
//  Math     
Math.max(...[1,2,3,4]); // 4

Math.max.apply(null,[1,2,3,4]); // 4

//  reduce   
//                    reducer  (    ),            
/*
	  : arr.reduce(callback[, initialValue])
	callback
		           ,      :
	prev
		           ;                 , initialValue(    )。
	cur
		          。
	currentIndex  
		               。      initialValue,       0,   1。
	array  
		  reduce()   
	initialValue  
		        callback           。          ,             。   		            reduce    。
*/
[1,2,3,4].reduce((prev,cur,curIndex,arr) => {
		return Math.max(prev,cur) ; //       
},0);  //4
行列の和
//  reduce    
 [1,2,3,4].reduce((prev,cur) =>{
 	return prev + cur;
 }//  1+2+3+4   10
配列結合
[1,2,3,4].concat([5,6]); //[1,2,3,4,5,6]
[...[1,2,3,4],...[5,6]];  //[1,2,3,4,5,6]
[1,2,3,4].push.apply([1,2,3,4],[5,6]);   //[1,2,3,4,5,6]
ある値が含まれているかどうかを判断します.
[1,2,3].includes(4); //false
[1,2,3].indexOf(4); //-1              ,     -1
[1,2,3].find(item => item ===3);  //3             ,     undefined
[1,2,3].findIndex( item => item ===3); //2              ,     -1
クラス行列変換
Array.prototype.slice.call(arguments);
Array.prototype.slice.apply(arguments)
Array.from(arguments);
[...arguments];
配列フィルタ
[1,2,3,4].every(item => {return item>2});  //false            2

[1,2,3,4].some(item => {return item>2});  //true            2

[1,2,3,4].filter(item =>{ return item>2});  //[3,4]  
オブジェクト配列変換
Object.keys({name:'zhangsan',age:14});//['name','age']
Object.values({name:'zhangsan',age:14}); //['zhangsan',14];
Object.entries({name:'zhangsan',age:14}); //[ ['name','age'],['zhangsan',14]]