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"
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]
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]
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");
// 获取所有键值对 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"]]
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)); }
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; }
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]
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]
/** * @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; };
/** * @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; };
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 ?
/** * @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. 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; };
本篇文章到这里就已经全部结束了,更多其他精彩内容可以关注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!