js配列とクラス配列
6850 ワード
配列の定義:
[]にカンマで区切り、配列、アルファベット、文字列、undefinedなど、任意の値を書き込むことができます.配列要素:配列にアクセスされたデータ;配列長:配列要素の個数配列インデックス(下付き):配列内のデータを格納およびアクセスするために使用されます.0位から1.配列は、var arr=[];配列文字数,[]のデータはカンマで区切られ(まばらな配列)、カンマを書くとundefinedが表示されます.
var arr = [1,2,,,,3,4];
undefined, ——[1,2,3,undefined,undefined,unfined,3,4]
arr.length——7
2.コンストラクション関数による配列の作成:var arr=new Array()
var arr = new Array(10);
配列の読み取りと書き込み:
①arr[num]//オーバーフローして読んではいけません.そうしないとundefinedになります.eg:
var arr = [ ]; arr[10] ——undefined
②arr[num] = xxx;//オーバーフロー可能eg:`var arr=[];arr[10] = ‘abv’;11番目のビットに値を割り当て、arrにアクセスします.[undefined*10,abv]配列の一般的なメソッド(配列のすべてのメソッドはArr.prototypeに由来):
1.元の配列を変更可能(元の配列を変更可能な方法は7つ)
①.push()配列の最後のビットにデータを追加し、同時に複数のビットを追加できます.
push: var arr = [1,2,3];
Arr.prototype.push = function (){
for(var i = 0;i < arguments.length;i++){
this[this.length] = arguments[i];
}
return this.length;
}
②.pop()配列の最後の1つを切り取り、パラメータを伝達しない.
var arr = [1,2,3];
arr.pop();// ,
arr——[1,2]
var num = arr.pop();// num
num——3// num
③.unshift()は配列の前にデータ
var arr = [1,2,3];arr.unshift(0,1);
を追加してarrを表示する-[0,1,2,3]④.shift()は配列の前に要素を削除して返し、var arr = [1,2,3]; arr.shift()
-->[2,3]を切り取る.⑤.reverse()は元の配列を逆にvar arr = [1,2,3]; arr.reverse()
-->[3,2,1]⑥とする.splice()スライス方法;arr.splice(負の数から始まると逆数の数番目)は、どのくらいの長さを切り取り、切り口に新しいデータを追加するか)配列が内部でどのように順序を正しますか(-1は逆数の1位、+1は2位)pos+=pos>0?0 : this.length var arr = [1,2,3,4,5];
arr.splice(1,2)// [2,3]
[1,4,5]
var arr = [1,2,3,5];
arr.splice(3,0,4)// ,
[1,2,3,4,5]
⑦.sort()は配列を昇順に並べ替え(自分でルールを変更できる)、
var arr = [5,4,3,2,1];
arr.sort();
console.log(arr);——[1,2,3,4,5]
var arr = [1,3,5,4,10];
arr.sort() [1,3,4,5,10]
[1,10,3,4,5], ascII
自分でルールを変更できます:var arr=[2,10,20,13,4,8,9];//比較昇順ルール:1.2つの値を書く必要があります.戻り値returnを見る:①戻り値は負数前に置く②負数、後の数前に置く③0不動
arr.sort(function(a,b){
if(a > b){
return 1;//
}else{
return -1;//
}
})
:arr.sort(function(a,b){
return a - b;// :a-b a > b,a-b a
2.元の配列を変更しない
①.concat()は2つの配列を接続し、結果を返して元の配列を変更しません.
var arr = [1,2,3];
var arr1 = [4,5];
arr.concat(arr1);——[1,2,3,4,5]
②.toString()は配列を文字列にして結果
var arr = [1,2,3]; arr.toString()
-123③を返す.splice()メソッドsplice(ビットから切り取り、ビットに切り取る)の2つのパラメータ.1つのパラメータの場合(何番目から最後まで切り取ります);パラメータなし(全体を切り取る)var arr = [1,2,3,4];
var newArr = arr.splice()// ——[ ]
④.join()どのパラメータを渡すかはパラメータで配列内のデータを接続し、文字列形式の
var arr = [1,2,3,4,5]; arr.join("-")
--「1-2-3-4-5」⑤.split()を伝えるvar arr = [1,2,3,4,5,6]; arr.split("4")
——[「1-2-3-」、「5-6」④と⑤を可逆的に分割するクラス配列
Argumentsはクラス配列1である.属性名の擬似配列の特性2を利用することができる.動的にlengthプロパティ3を成長させることができます.クラス配列にpushメソッドを強制的に呼び出すと、length属性値の位置に基づいて属性の拡張が行われます.
★クラス配列の構成部分:属性がインデックス属性であるにはlength属性が必要であり、pushを加えたほうがよい
メリット:配列とオブジェクトの特性をつなぎ合わせるが、すべてが
var obj = {
"0" : 'a',
"1" : 'b',
"2" : 'c',
"length" : 3,
"push" : Array.prototype.push,
"splice" :Array.prototype.splice
}
obj——["a","b","c"]
はいれつデポジット
var arr = [1,1,1,2,2,2,3,3,3];
Array.prototype.unique = function(){// unique
var temp = {},//
arr = [],//
len = this.length;
for(var i = 0; i < len;i++){//
if(!temp[this[i]]){// ,
temp[this[i]] = 'abc';// ; ,
arr.push(this[i]);//
}
}
return arr;//
}
バブルソート
var arr = [5,4,3,2,1];
for(var i = 0;i < arr.length - 1;i++){//
for(var j = 0;j < arr.length -1 - i;j++){
if(arr[j] > arr[j + 1]){
var temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
console.log(arr);——[1,2,3,4,5]
例題:アリババ
var obj = {
"2" : "a",
"3" : "b",
"length" : 2,
"push" : Array.prototype.push
}
obj.push("c");
obj.push("d");
obj——["2": "c", "3" : "d",length : 4]
Array.prototype.push = function(target){
//this[obj.length] = taget;
obj[obj.length] = target;
//this.length++;
obj.length++;
}
ケース:typeofメソッドをカプセル化し、元の値と参照値を正確に識別します.
function typeof(target){
var ret = typeof(target);
var template = {
"[object Array]" : "array",
"[object Object]" : "object",
"[object Number]" : "number - Object",
"[object Boolean]" : "boolean - Object",
"[object String]" : "string - Object"
}
if(target === null){
return "null";
}else if(ret === "object"){//
var str = Object.prototype.toString.call(target);
return template[str];
}else{
return ret;//
}
}
配列の例:配列を反転
var arr = [1,2,3,4,5,6];
for(var i = 0;i <= arr.length/2; i++){// ,
var temp = arr[i];//
arr[i] = arr[arr.length - 1 - i];
arr[arr.length - 1 - i] = temp;
}
console.log(arr);
配列例:配列内の各要素を|で接続して文字列出力を構成する
var names = ["apple","banana","origin","pron"];
var str = " ";
for(var i = 1;i < names.length;i++){
str += "|" + names[i];
}
console.log(names[0] + str);//
配列の重複する0を取り除き、他のデータを新しい配列に配置します.
var arr = [1,2,0,3,0,4,5,0,0,6];
var newArray = [];// 0
for(var i = 0; i < arr.length;i++ ){
if(arr[i] != 0){
newArray[newArray.length] = arr[i];// ,
}
}
console.log(newArray);
配列のケース:ユーザーにクラスの人数を入力するように提示して、総成績を求めて、平均値、最大値、最小値
var perCount = parseInt(prompt(" "));//
var scores = [];//
for(var i = 0;i < perCount;i ++){//
//
scores[scores.length] = parseInt(prompt(" + (i + 1) + :"));
}
// , , ,
var sum = 0;//
var avg = 0;//
var max = scores[0];//
var min = scores[0];//
for(var i = 0;i <= scores.length;i++ ){
sum += scores[i];
if(max < scores[i]){
max = scores[i];
}
if(min > scores){
min = sores[i];
}
}
avg = sum / scores.length;
console.log(" :" + sum);
console.log(" " + avg);
console.log(" " + max);
console.log(" " + min);