Heim > Web-Frontend > js-Tutorial > Die grundlegendste Datenstruktur in Javascript-----Array

Die grundlegendste Datenstruktur in Javascript-----Array

高洛峰
Freigeben: 2016-10-13 14:34:01
Original
1103 Leute haben es durchsucht

1.1 Die Definition eines Arrays in Javascript

Die Standarddefinition eines Arrays: eine lineare Sammlung gespeicherter Elemente. Der Index ist normalerweise eine Zahl und wird zur Berechnung verwendet die Lagerposition zwischen den Elementen.
Ein Array in JavaScript ist jedoch ein spezielles Objekt. Der zur Darstellung des Offsets verwendete Index ist eine Eigenschaft des Objekts und der Index kann eine Ganzzahl sein. Diese numerischen Indizes werden jedoch intern in Zeichenfolgentypen konvertiert, da Eigenschaftsnamen in JavaScript-Objekten Zeichenfolgen sein müssen.

2.2 Arrays verwenden

2.2.1 Arrays erstellen

var nums = [1,2,3,4]; || Diese Methode ist effizienter

var nums = new Array(1,2,3,4);

2.2.2 Arrays lesen und schreiben

In einer Zuweisungsanweisung verwenden Sie den Operator [], um Daten zuzuweisen Arrays wie die folgende Schleife weisen einem Array Zahlen von 1 bis 100 zu:

var nums = [];for (var i =0; i<100;i++){
    nums[i] = i+1;}
Nach dem Login kopieren

Sie können auch den Operator [ ] verwenden, um Elemente im Array zu lesen:

var nums = [1,2,3,4];
var sum = nums[0]+nums[1]+nums[2]+nums[3];
console.log(sum)
Nach dem Login kopieren

2.2.3 Array aus String generieren

var sentence = "the quick brown fox jumped over the lazy dog"; 
var  words = sentence.split(" ");
for (var  i=0; i<words.length;i++){
    console.log("word " + i + ":" +words[i]);
}
Nach dem Login kopieren

Rufen Sie im obigen Programm die Methode splite() auf, teilen Sie einen Satz durch das Leerzeichen zwischen Wörtern in Teile und behandeln Sie jeden Teil als Die Elemente sind in einem neu erstellten Array gespeichert.

2.2.4 Operationen zur Integrität von Arrays

1. Weisen Sie ein Array einem anderen Array zu.

var nums = [];
for (var i = 0; i<10;i++){
    nums[i] = i+1;
}
var samenums = nums;
Nach dem Login kopieren

Die obige Zuweisungsoperation gilt jedoch nur für die zugewiesenen Adds a neuer Verweis auf das Array. Wenn der Wert eines Arrays durch die ursprüngliche Referenz geändert wird, wird auch die andere Referenz geändert.

var nums = [];
for (var i = 0; i<10;i++){
    nums[i] = i+1;
}
var samenums = nums;
nums[0] = 400;
console.log(samenums[0]);  //显示400
Nach dem Login kopieren

Bei diesem Verhalten handelt es sich um eine flache Kopie, und das neue Array verweist weiterhin auf das ursprüngliche Array.
Eine bessere Lösung ist das Deep Copy, bei dem jedes Element im ursprünglichen Array in das neue Array kopiert wird.

//写个深复制函数function copy(arr1,arr2){
    for (var i = 0;i<arr1.length;i++){
        arr2[i] = arr1[i];
    }}var nums = [];for (var i = 0; i<10;i++){
    nums[i] = i+1;}var samenums = [];copy(nums,samenums);nums[0] = 400;console.log(samenums[0]);   //显示1
Nach dem Login kopieren

2.3 Zugriffsfunktion

2.3.1 Element suchen =====indexOf()

wird verwendet, um herauszufinden, ob sich der übergebene Parameter im Zielarray befindet existieren. Wenn das Zielarray diesen Parameter enthält, wird der Index des Elements im Array zurückgegeben; andernfalls wird -1 zurückgegeben.

2.3.2 String-Darstellung von Arrays ===== join() und toString()

Beide Methoden geben einen String zurück, der alle Elemente des Arrays enthält, getrennt durch Kommas.

2.3.3 Erstellen Sie ein neues Array aus einem vorhandenen Array =====concat() und splice()

Die Methode concat() kann mehrere Arrays zusammenführen, um ein neues Array zu erstellen.
Die splice()-Methode fängt eine Teilmenge eines Arrays ab, um ein neues Array zu erstellen. Der erste Parameter dieser Methode ist der Startindex des Abfangens und der zweite Parameter ist die Länge des Abfangens.

var itDiv = ["Mike","Clayton","Terrill","Raymond","Cynthia","Danny","Jennifer"]; 
var dmpDept = itDiv.splice(3,3);  // Raymond,Cynthia,Danny print(cisDept);
var cisDept = itDiv; 
console.log(dmpDept);// Mike,Clayton,Terrill,Jennifer
Nach dem Login kopieren

2.4 Variablenfunktion

2.4.1 Elemente zum Array hinzufügen======push() und unshift()

push()-Methode wird Am Ende des Arrays wird ein Element hinzugefügt.
Die Methode unshift() kann Elemente am Anfang des Arrays hinzufügen.

var nums = [2,3,4,5]; console.log(nums); // 2,3,4,5 var newnum = 1;
 nums.unshift(newnum); 
 console.log(nums); // 1,2,3,4,5 
 nums = [3,4,5];
  nums.unshift(newnum,1,2); 
  console.log(nums); // 1,2,3,4,5
Nach dem Login kopieren

2.4.2 Elemente aus dem Array pop() und shift() löschen

Die Methode pop() kann Elemente am Ende des Arrays löschen.

var nums = [1,2,3,4,5,9]; 
nums.pop(); 
console.log(nums); // 1,2,3,4,5
Nach dem Login kopieren

Die Methode „shift()“ kann das erste Element des Arrays löschen.

var nums = [9,1,2,3,4,5];
 nums.shift(); 
 console.log(nums); // 1,2,3,4,5
Nach dem Login kopieren

pop() 和 shift() 方法都将删掉的元素作为方法的 返回值返回,因此可以使用一个变量来保存删除的元素:

var nums = [6,1,2,3,4,5]; 
var first = nums.shift(); // first gets the value 9 
nums.push(first);
 console.log(nums); // 1,2,3,4,5,6
Nach dem Login kopieren

2.4.3 从数组中间位置添加和删除元素=====splice()

用splice()方法为数组添加元素,需提供如下参数:

起始索引(就是希望开始添加元素的地方)

需要删除的元素个数(添加元素时该参数设为0)

想要添加进数组的元素
such as:

var nums=[1,2,3,7,8,9];
var newElements = [4,5,6];
nums.splice(3,0,newElements);
console.log(nums);   //1,2,3,4,5,6,7,8,9
Nach dem Login kopieren

下面是用splice()删除数组元素的例子:

var nums = [1,2,3,100,200,4,5];
nums.splice(3,2);
console.log(nums);   //1,2,3,4,5
Nach dem Login kopieren

2.4.4 为数组排序

1.reverse() ====> 将数组中元素的顺序进行翻转

2.sort() ======>对字符型的元素按字典顺序进行排序

对于数字类型的元素,如果要用sort()排序,可以在调用方法时传入一个大小比较函数,排序时,sort()方法会根据该函数比较数组中两个元素的大小,来决定整个数组的顺序。

function compare(num1,num2){
return num1-num2;
}
var nums = [3,4,1,80,27];
nums.sort(compare);
Nach dem Login kopieren

sort()使用了compare()函数对数组按照数字大小进行排序,而不是按照字典顺序。

2.5 迭代器方法

2.5.1 不生成新数组的迭代器方法

1.forEach()

接受一个函数作为参数,并对数组中的每个元素使用该函数。

    function square(num){
      console.log(num,num*num);
    }
    var nums = [1,2,3,4,5,6];
    nums.forEach(square);
Nach dem Login kopieren

2.every()

接受一个返回值为布尔型的函数,对数组中的每个元素使用该函数。如果对于所有的元素,该函数都返回true,则该方法返回true。

function isEven(num){
    return num%2 == 0;
}
var nums = [2,4,6,8];
var even = nums.every(isEven);
if(even){
    console.log("all numbers are even");
}else{
    console.log("not all numbers are even");
}
Nach dem Login kopieren

可以改改数组里的元素试试。

3.some()

some() 方法也接受一个返回值为布尔类型的函数,只要有一个元素使得该函数返回 true, 该方法就返回 true.

function isEven(num) {   
     return num % 2 == 0;
      } 
 var nums = [1,2,3,4,5,6,7,8,9,10]; 
 var someEven = nums.some(isEven); 
 if (someEven) {    
        console.log("some numbers are even"); 
 } else {   
        console.log("no numbers are even");
   }
    nums = [1,3,5,7,9]; 
    someEven = nums.some(isEven); 
    if (someEven) {    
            console.log("some numbers are even");
     } else {    
          console.log("no numbers are even");}
Nach dem Login kopieren

4.reduce()

接受一个函数,返回一个值。该方法会从一个累加值开始,不断对累加值和 数组中的后续元素调用该函数,直到数组中的最后一个元素,最后返回得到的累加值。
下 面这个例子展示了如何使用 reduce() 方法为数组中的元素求和:

function add(runningTotal,currentValue){
    return runningTotal + currentValue;
}
var nums = [1,2,3,4,5,6];
var sum = nums.reduce(add);
console.log(sum);
Nach dem Login kopieren

reduce() 方法和 add() 函数一起,从左到右,依次对数组中的元素求和。
reduce() 方法也可以用来将数组中的元素连接成一个长的字符串:

function concat(accumulatedString,tiem){
    return accumulatedString + item;
}
var words = ["the ", "quick ","brown ", "fox "]; 
var sentence = words.reduce(concat);
console.log(sentence);
Nach dem Login kopieren

2.5.2 生成新数组的迭代器方法

1. map()

map() 和 forEach() 有点儿像,对 数组中的每个元素使用某个函数。两者的区别是 map() 返回一个新的数组,该数组的元素 是对原有元素应用某个函数得到的结果。

function curve(grade){
    return grade += 5;
}
var grades = [78,89,92,74];
var newgrades = grades.map(curve);
console.log(newgrades);  // 83,94,97,79
Nach dem Login kopieren

2. filter()

filter() 和 every() 类似,传入一个返回值为布尔类型的函数。和 every() 方法不同的是, 当对数组中的所有元素应用该函数,结果均为 true 时,该方法并不返回 true,而是返回 一个新数组,该数组包含应用该函数后结果为 true 的元素。

function passing(num) {    
        return num >= 60;
 } 
 var grades = []; 
 for (var i = 0; i < 20; ++i) {    
        grades[i] = Math.floor(Math.random() * 101); 
    }
 var passGrades = grades.filter(passing);
console.log("All grades: "); 
console.log(grades);
console.log("Passing grades: "); 
console.log(passGrades);
Nach dem Login kopieren


Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage