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]]