Heim >Web-Frontend >js-Tutorial >Einführung in häufig verwendete Operationen in Javascript-Arrays (Codebeispiele)

Einführung in häufig verwendete Operationen in Javascript-Arrays (Codebeispiele)

不言
不言nach vorne
2019-03-19 11:02:192465Durchsuche


Dieser Artikel bietet Ihnen eine Einführung in gängige Operationen (Codebeispiele) in JavaScript-Arrays. Ich hoffe, er wird Ihnen helfen.

1. Ändern Sie nicht das ursprüngliche Array, geben Sie ein neues Array (String) zurück

1. concat() verbindet zwei oder mehr Arrays, die ursprünglichen Arrays auf beiden Seiten werden nicht geändert Das zurückgegebene Ergebnis ist eine Kopie des verketteten Arrays.

2. join() Fügen Sie alle Elemente im Array in einen String ein und geben Sie den String zurück

var a = [1,2,3];
a.join([4,5,6]);    //  "14,5,624,5,63"
a.join('sau');      //  "1sau2sau3"

3. Wählen Sie vom Anfang bis zum Ende (außer dem Ende) Flache Kopie a Teil des Arrays in ein neues Array

var a  = [1,2,3,4,5];
a.slice(0,0);     //[]
a.slice(0,1);     //[1]
a.slice(2,4);    //[3,4]
a.slice(0,5);    //[1,2,3,4,5]
a.slice(10,1);   //[]
a.slice(4);   //[5]

4. map() erstellt ein neues Array und gibt es zurück, wobei jedes Element des neuen Arrays durch Aufrufen jedes Elements im ursprünglichen Array erhalten wird, um die bereitgestellte Funktion auszuführen . Komm, das ursprüngliche Array bleibt unverändert

5. every() führt die angegebene Callback-Funktion einmal für jedes Element im Array aus, bis die Callback-Funktion zu diesem Zeitpunkt false zurückgibt und nicht Setzen Sie die Ausführung fort. Wenn die Rückruffunktion für jedes Element „true“ zurückgibt, gibt every() „true“ zurück.

6. some() führt die angegebene Callback-Funktion einmal für jedes Element im Array aus, bis die Callback-Funktion true zurückgibt. Zu diesem Zeitpunkt gibt some() true zurück und wird nicht mehr ausgeführt. Wenn die Rückruffunktion für jedes Element false zurückgibt, gibt some() false zurück.

7. filter() Erstellt ein neues Array, das alle Elemente des von der bereitgestellten Funktion implementierten Tests enthält.

2. Ändern Sie das ursprüngliche Array

1. führt die bereitgestellte Funktion für jedes Element aus. Das ursprüngliche Array wird geändert, das Ausführungsergebnis wird nicht zurückgegeben und undefiniert wird zurückgegeben.

2. pop() löscht das letzte Element des Arrays und gibt den Wert des gelöschten Elements zurück. Wenn das Array leer ist, wird das Array nicht geändert und undefiniert zurückgegeben.

3. push() fügt ein oder mehrere Elemente am Ende des Arrays hinzu und gibt die geänderte Länge des Arrays zurück.

4. reverse() kehrt die Position der Elemente im Array um und gibt einen Verweis auf das Array zurück.

5. Shift() entfernt das erste Element aus dem Array, ändert das ursprüngliche Array und gibt den Wert des Elements zurück.

6. unshift() Fügt ein oder mehrere Elemente am Anfang des Arrays hinzu und gibt die Länge des neuen Arrays zurück.

7. sort() Sortiert die Elemente des Arrays und gibt das Array zurück. Die Sortierung ist nicht unbedingt stabil. Die Standardsortierreihenfolge basiert auf String-Unicode-Codepunkten.

8. splice() Elemente zum Array hinzufügen/entfernen und dann das gelöschte neue Array zurückgeben().

var a  = [1,2,3,4,5];
a.splice(0,1);     //删除从0位置开始的1个   返回[1]   a为[2,3,4,5] 
a.splice(1,0,99)   //在1的位置插入99   [2,99,3,4,5]
a.splice(1,1,88)   //99替换为88  [2,88,3,4,5]

3. Traversal-Methode

1. Holen Sie sich den Attributnamen: Der Unterschied zwischen for...in und object.key()

Antwort: 1. for in durchläuft die Liste der Attributnamen, die vom Objekt aufgezählt werden können, einschließlich der [[prototype]]-Prototypkette

2. Object.keys() prüft nur, ob der Attributname vorhanden ist im Objekt und gibt ein Array zurück, das alle aufzählbaren Eigenschaftsnamen enthält;

3. Object.getOwnPropertyNames() prüft nur, ob der Eigenschaftsname im Objekt vorhanden ist und gibt ein Array zurück, das alle Eigenschaftsnamen enthält, ob aufzählbar oder nicht .

2. Attributwerte abrufen: for... of und object.values()

for of-Anweisung: Durchlaufen Sie die aufzählbare Attributwertliste des iterierbaren Objekts, einschließlich [[propertype] ] Prototypenkette;

object.values(): Gibt die Werte aller aufzählbaren Eigenschaften eines bestimmten Objekts selbst zurück, mit Ausnahme der Prototypenkette.

4. Konvertieren Sie ES6-Syntax-Map-Schlüssel-Wert-Paare in Arrays

Neue Map erstellt eine Map

// new Map创建一个map
let map = new Map([[1,"one"], [2,"two"], [3,"three"]]);
map.set(4, "four");
// 获取所有键值对
console.log("获取key")
console.log([...map.keys()]) // 输出[1, 2, 3, 4]

console.log("获取value")
console.log([...map.values()]) // 输出[one, two, three, four]

console.log("获取map数组")
console.log([...map]) // 输出[[1, "one"], [2, "two"], [3, "three"], [4, "four"]]

Zwei aufsteigende Die Arrays werden zu einem aufsteigenden Array zusammengeführt

1 Zeitkomplexität O(M+N), Raumkomplexität O(M+N)

function merge(left, right){
    let result  = [],
        il      = 0,
        ir      = 0;

    while (il < left.length && ir < right.length) {
        result.push(left[il] < right[ir] ? left[il++] : right[ir++]);
console.log(result);
    }

    return result.concat(left.slice(il)).concat(right.slice(ir));
}

2 +N), Raumkomplexität O(1)

   // m, n 是数组长度
function merge(left, m, right,  n) {
    var i = m - 1, j = n - 1, writeIdx = m + n - 1;
    while (i >= 0 && j >= 0)
    left[writeIdx--] = left[i] > right[j]? left[i--] : right[j--];
    while (j >= 0)
    left[writeIdx--] = right[j--];
    return left;
}

6. Array-Duplizierungsproblem

(1) Array-Deduplizierung

1. Reduziermethode

const distinct = arr => arr.sort().reduce( (init, current) => {
    
    if (init.length === 0 || init[init.length - 1] !== current) {
        init.push( current );
    }
    return init;
}, []);

let arr = [1,2,1,2,3,5,4,5,3,4,4,4,4];
distinct(arr); // [1, 2, 3, 4, 5]

2. Filtermethode

const unique = arr => arr.filter( (element, index, self) => {

return self.indexOf( element ) === index;
});
let arr = [1,2,1,2,3,5,4,5,3,4,4,4,4];
distinct(arr); // [1, 2, 3, 5, 4]

(two ) Array sortieren um Duplikate zu entfernen

/**
 * @param {number[]} nums
 * @return {number}
 */
var removeDuplicates = function(nums) {
    
    if(!nums || nums.length == 0) return 0;
    
    let len = 0;
    for(let i = 1; i < nums.length; i++) {
        if (nums[len] != nums[i]) {
            nums[++ len] = nums[i];
        }
    }
    return len + 1;
};

(3) Bestimmen Sie, ob es Duplikate im Array gibt

/**
 * @param {number[]} nums
 * @return {boolean}
 */
var containsDuplicate = function(nums) {
    
    let hashMap = new Map();
    for(let i = 0; i < nums.length; i++) {
        
        if( hashMap.has(nums[i]) ) {
           return true;
        }
        
        hashMap.set(nums[i], 1);
    }
    
    return false;
};

7. Schnittpunkt zweier Arrays

Schreiben Sie bei zwei gegebenen Arrays eine Methode zur Berechnung ihrer Schnittmenge

Zum Beispiel:

Gegebene Zahlen1 = [1, 2, 2, 1], Zahlen2 = [2, 2], Rückgabe von [2, 2].

Hinweis: 1. Die Anzahl der Vorkommen jedes Elements in der Ausgabe sollte mit der Anzahl der Vorkommen des Elements in den beiden Arrays übereinstimmen. 2.

Wir können die Reihenfolge der Ausgabeergebnisse ignorieren up: 1. Was ist, wenn das angegebene Array bereits sortiert ist? 2. Wenn die Größe von nums1 viel kleiner als nums2 ist, welche Methode ist besser? 3. Wenn die Elemente von nums2 auf der Festplatte gespeichert sind, ist der Speicher begrenzt. Sie können nicht alle Elemente auf einmal in den Speicher laden.

Lösung:

/**
 * @param {number[]} nums1
 * @param {number[]} nums2
 * @return {number[]}
 */
var intersect = function(nums1, nums2) {
    
    var map1 = new Map();
    var number = [];
    
    for(var i = 0; i < nums1.length; i++) {
        var map1Value = map1.get(nums1[i]);
        map1.set( nums1[i], ( map1Value ? map1Value : 0 ) + 1 );
    }
    
    for(var i = 0; i < nums2.length; i++) {
        if( map1.has(nums2[i]) && map1.get(nums2[i]) != 0 ) {
            number.push(nums2[i]);
            map1.set( nums2[i], map1.get(nums2[i]) - 1 );
        }
    }
    
    return number;
};

8 >

给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。

/**
 * @param {number[]} nums
 * @return {number}
 */
var singleNumber = function(nums) {
    
    let number = 0;
    for(let i = 0; i < nums.length; i++) {
        number ^= nums[i];
    }
    return number;
};

本篇文章到这里就已经全部结束了,更多其他精彩内容可以关注PHP中文网的JavaScript教程视频栏目!

Das obige ist der detaillierte Inhalt vonEinführung in häufig verwendete Operationen in Javascript-Arrays (Codebeispiele). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:segmentfault.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen