Maison > interface Web > js tutoriel > le corps du texte

Introduction aux opérations couramment utilisées dans les tableaux javascript (exemples de code)

不言
Libérer: 2019-03-19 11:06:36
avant
2434 Les gens l'ont consulté


Cet article vous présente une introduction aux opérations courantes (exemples de code) dans les tableaux JavaScript. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.

1. Ne modifiez pas le tableau d'origine, renvoyez un nouveau tableau (chaîne)

1. concat() connecte deux tableaux ou plus, les tableaux d'origine des deux côtés ne changeront pas, et le résultat est une copie du tableau concaténé.

2. join() Mettez tous les éléments du tableau dans une chaîne et renvoyez la chaîne

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

3. slice() Du début à la fin (à l'exclusion de la fin) ) Sélectionnez une partie du tableau et copiez-la superficiellement dans un nouveau tableau

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]
Copier après la connexion

4. map() crée un nouveau tableau et le renvoie, où chaque élément du nouveau tableau est exécuté en appelant chaque élément du tableau. tableau d'origine La fonction fournie est obtenue et le tableau d'origine reste inchangé

5. each() exécute la fonction de rappel spécifiée une fois pour chaque élément du tableau jusqu'à ce que la fonction de rappel renvoie false, auquel moment each() renvoie false et Plus d'exécution, si la fonction de rappel renvoie true pour chaque élément, alors each() renvoie true.

6. some() exécute la fonction de rappel spécifiée une fois pour chaque élément du tableau jusqu'à ce que la fonction de rappel renvoie true, moment auquel some() renvoie true et n'est plus exécuté. Si la fonction de rappel renvoie false pour chaque élément, alors some() renverra false.

7. filter() Crée un nouveau tableau contenant tous les éléments du test implémenté par la fonction fournie.

2. Changer le tableau d'origine

1. forEach() exécute la fonction fournie pour chaque élément. Le tableau d'origine sera modifié, le résultat de l'exécution ne sera pas renvoyé et undéfini sera renvoyé.

2. pop() supprime le dernier élément du tableau et renvoie la valeur de l'élément supprimé. Si le tableau est vide, le tableau n'est pas modifié et undéfini est renvoyé.

3. push() ajoute un ou plusieurs éléments à la fin du tableau et renvoie la longueur modifiée du tableau.

4. reverse() inverse la position des éléments dans le tableau et renvoie une référence au tableau.

5. shift() supprime le premier élément du tableau, modifie le tableau d'origine et renvoie la valeur de l'élément.

6. unshift() Ajoute un ou plusieurs éléments au début du tableau et renvoie la longueur du nouveau tableau.

7. sort() Trie les éléments du tableau et renvoie le tableau. Le tri n’est pas nécessairement stable. L'ordre de tri par défaut est basé sur des points de code Unicode de chaîne.

8. splice() Ajoutez/supprimez des éléments au tableau, puis renvoyez le nouveau tableau supprimé().

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]
Copier après la connexion

3. Méthode de traversée

1. Obtenez le nom de l'attribut : la différence entre for...in et object.key()

Réponse : 1. for in parcourt la liste des noms d'attributs qui peuvent être énumérés par l'objet, y compris la chaîne de prototypes [[prototype]]

2. Object.keys() vérifie uniquement si l'attribut ; name est dans l'objet et renvoie un tableau, comprenant tous les noms de propriétés énumérables ;

3. Object.getOwnPropertyNames() vérifie uniquement si le nom de la propriété est dans l'objet et renvoie un tableau contenant tous les noms de propriétés, si dénombrable ou non.

2. Obtenir les valeurs d'attribut : for... of et object.values()

for of instruction : parcourir la liste de valeurs d'attribut énumérable de l'objet itérable, y compris [[propertype] ] Chaîne de prototypes ;

object.values() : renvoie les valeurs de toutes les propriétés énumérables d'un objet donné lui-même, à l'exclusion de la chaîne de prototypes.

4. Convertir la syntaxe ES6 Mapper les paires clé-valeur en tableaux

la nouvelle carte crée une carte

// new Map创建一个map
let map = new Map([[1,"one"], [2,"two"], [3,"three"]]);
map.set(4, "four");
Copier après la connexion
// 获取所有键值对
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"]]
Copier après la connexion

5, fusionnez deux tableaux ascendants en un seul tableau ascendant

1. Complexité temporelle O(M+N), complexité spatiale 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));
}
Copier après la connexion

2. Temps complexité O(M+N), complexité spatiale 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;
}
Copier après la connexion

6. Problème de duplication de tableau

(1) Suppression de tableau Lourde

1. méthode de réduction

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]
Copier après la connexion

2. méthode de filtrage

const distinct = arr =>

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]
Copier après la connexion
(2) Trier la déduplication du tableau

/**
 * @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;
};
Copier après la connexion
(3) Déterminer s'il y a des doublons dans le tableau

/**
 * @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;
};
Copier après la connexion
7. Intersection de deux tableaux

Étant donné deux tableaux, écrivez une méthode pour calculer leur intersection

Par exemple :

Étant donné nums1 = [1, 2, 2, 1], nums2 = [2, 2], renvoie [2, 2].

Remarque : 1. Le nombre d'occurrences de chaque élément dans le résultat doit être cohérent avec le nombre d'occurrences de l'élément dans les deux tableaux. 2.

. Nous pouvons ignorer l'ordre des résultats de sortie.

Suivi : 1. Et si le tableau donné est déjà trié ? 2. Et si la taille de nums1 est beaucoup plus petite, quelle méthode est la meilleure ? Si les éléments de nums2 sont stockés sur le disque et que la mémoire est limitée, vous ne pouvez pas charger tous les éléments dans la mémoire en même temps. Que devez-vous faire ?

Solution :

/**
 * @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;
};
Copier après la connexion
.

8. Trouver un numéro qui n'apparaît qu'une seule fois dans un tableau

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

/**
 * @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;
};
Copier après la connexion

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:segmentfault.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal