配列Aray学習ノート

4622 ワード

「ECMAScript配列は他の言語の配列とともにデータの系列表ですが、他の言語とは異なり、ECMAScript配列の各項目は任意の種類のデータを保存できます.つまり、配列の最初の位置で文字列を保存し、第二の位置で数値を保存し、第三の位置でオブジェクトを保存します.また、ECMAScript配列のサイズは、データの追加に伴って自動的に増加し、新規データを格納することができる動的に調整できる.
沢カス.「JavaScriptアドバンストプログラミング(第3版)」から抜粋.iBook s.
作成
var arr = [];
var arr = new Array();

var arr = [1,2,3];
var arr = new Array(1,2,3);

var arr = new Array(3);  // [undefined,undefined,undefined]

var arr = ['red','blue','yellow'];
var arr = new Array('red','blue','yellow');
検出
arr instanceof Array //true    
Array.isArray(arr) //true    
変換
var arr = [1,2,3]
arr.toString();
arr.valueOf();
arr.toLocaleString();
// return 1,2,3
toLocale String()方法は、toString()とvalueOf()方法と同じ値を返すことが多いが、いつも同じではない.配列のtoLocareStering()メソッドを呼び出すと、カンマ区切りの配列値の文字列も作成されます.前の2つの方法と唯一の違いは、今回は各項目の値を取得するために、各項目のtoLocal e-String()方法ではなく、tostring()方法を呼び出すことである.
スタック方法&キュー方法
スタック方法
スタックはLIFO(Last-Inn-First-Out)のデータ構造であり、最新に追加された項目は最初に取り除かれる.
push&pop
var arr = [1,2];
arr.push(3); //3
alert(arr); //[1,2,3]

arr.pop(); //3
alert(arr); //[1,2]
キューの使い方
キューデータ構造のアクセス規則はLIFOです.
push&shift
var arr = [1,2];
arr.push(3); //3
alert(arr); //[1,2,3]

arr.shift(); //1
alert(arr); //[2,3]
unshift
E 7およびより早いバージョンは、JavaScriptの実装において偏差があり、そのunshift()方法は常にundefinedに戻り、配列の新しい長さではなく、undefinedに戻る.IE 8は、非互換モードで正確な長さ値を返します.
var arr = [1,2];
arr.unshift(1); //  length 3
alert(arr); //[1,2,3]
並べ替え
逆転セ
反転配列
var arr = [1,2,3];
arr.reverse();
alert(arr); //[3,2,1]
ソフト
デフォルトでは、sort()メソッドは昇順に配列された配列項目のうち、一番小さい値が一番前にあり、一番大きい値が一番後ろにある.順序付けを実現するために、sort()方法は、各配列項目のtoString()変換方法を呼び出し、その後、得られた文字列を比較して、どのように並べ替えられているかを決定する.配列の一つ一つが数値であっても、ソート()の比較方法は文字列です.
var arr = [1,5,10,15];
arr.sort(); // [1,10,15,5];
/*    5    10,          ,"10"   "5"   ,            。*/

function compare(value1,value2){
  if(value1 > value2){
    return -1;
  }else if(value1 < value2){
    return 1;
  }else{
    return 0;
  }
}

arr.sort(compare); //[1,5,10,15]

function compare(value1,value2){
  if(value1 > value2){
    return 1;
  }else if(value1 < value2){
    return -1;
  }else{
    return 0;
  }
}

arr.sort(compare); //[15,10,5,1]
操作
cat
コピーしてコピーを返します.
var arr = [1,2];
arr.concat(3,4,5); //[1,2,3,4,5]
alert(arr); //[1,2]
slice
var arr = [1,2,3,4];

arr.slice(1) //[2,3,4]
arr.slice(1,3); //[2,3]
arr.slice(-1); //[4]
arr.slice(-1,-3); //[]
arr.slice(-3,-1); //[2,3]
splice
削除
var arr = [1,2,3];
arr.splice(1,1); //[1,3]
増加
var arr = [1,2,3];
arr.splice(1,0,4); //[1,4,2,3]
arr.splice(1,0,'a','b'); //[1,'a','b',4,2,3]
置換の挿入
var arr = [1,2,3];
arr.splice(1,1,4); //[1,4,3]
位置
indexOf
索引を返します.前から後まで
var arr = [1,2,3];
arr.indexOf(2); //1
lastIndexOf
索引を返します.
var arr = [1,2,3];
arr.lastIndexOf(2); //1
反復
every
配列内の各項目に対して指定された関数を実行します.各項目に対してtrueを返すと、trueを返します.
var arr = [1,2,3];
arr.every(function(item,index,arr){
  return item > 2;
})
// false
そして私
配列内の各項目に対して与えられた関数を実行します.この関数がいずれかの項目に対してtrueを返すと、trueを返します.
var arr = [1,2,3];
arr.some(function(item,index,arr){
  return item > 2;
})
// true
filter
配列内の各動作に与えられた関数を返します.この関数はtrueの項目からなる行列を返します.
var arr = [1,2,3];
arr.filter(function(item,index,arr){
  return item > 2;
})
// [3]
map
配列内の各項目に対して与えられた関数を実行し、各関数が呼び出した結果からなる行列を返します.
var arr = [1,2,3];
arr.map(function(item,index,arr){
  return item > 2;
})
// [false,false,true]


arr.map(function(item,index,arr){
  return item * 2;
})
//[2,4,6]
forEach
配列内の各項目に対して、与えられた関数を実行します.この方法は戻り値がない.
var arr = [1,2,3];
arr.forEach(function(item,index,arr){
  item > 2 ? console.log('  2') : console.log('  2');
})
//  2   2   2
縮小reduceおよびreduceRightの2つの方法は、配列のすべての項目を反復し、最終的な戻り値を構築する.
reduce
var arr = [1,2,3];
arr.reduce(function(prev,cur,index,arr){
  return prev + cur;
})
//1+2+3=6
reduceRight
var arr = [1,2,3];
arr.reduceRight(function(prev,cur,index,arr){
  return prev + cur;
})
includes
s 7は、配列にある値が含まれていればtrueに戻ります.
var arr = [1,2,3];
arr.includes(2); //true