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

Une brève discussion sur l'utilisation de Set et Map dans Nodejs

青灯夜游
Libérer: 2021-03-19 09:59:18
avant
4548 Les gens l'ont consulté

Cet article vous guidera à travers l'utilisation de Set et Map dans Node. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il sera utile à tout le monde.

Une brève discussion sur l'utilisation de Set et Map dans Nodejs

Recommandations associées : "Tutoriel nodejs"

Ensemble de types de données

Fonction Semblable aux tableaux, mais différent des tableaux : il ne peut pas stocker d'éléments répétés

  • Scénarios d'application : Déduplication de tableau

  • eg01 : Utilisation de base

let set1 = new Set([10, 20, 30, 40, 10, 20, 30, 50]);
console.log(set1); // Set(5) { 10, 20, 30, 40, 50 }
Copier après la connexion
  • eg02 : Déduplication de tableau
let arr = [10, 20, 30, 40, 10, 20, 30, 50];
let set = new Set(arr);
console.log(set); // Set(5) { 10, 20, 30, 40, 50 }
let arrNew = [...set];
console.log(arrNew); // [ 10, 20, 30, 40, 50 ]
Copier après la connexion
  • eg03 : Déduplication de tableau, transformez l'opération ci-dessus en une phrase
let arr = [10, 20, 30, 40, 10, 20, 30, 50];
let arrNew = [...new Set(arr)];
console.log(arrNew); // [ 10, 20, 30, 40, 50 ]
Copier après la connexion

Chaîne de modèle

  • es5

La chaîne n'a pas de format et les variables ne peuvent pas y être écrites

  • es6

Chaîne de modèle

let author = "波波";
let str = `
    静夜思
        ${author}
    床前明月光,
    低下鞋两双,
    举头望明月,
    低头思阿香.

 `;
console.log(str);
Copier après la connexion
  • eg01 :
let name = "千里";
let age = 38;
let score = 100;
console.log(`我的名字是${name},我的年龄是${age},我的成绩是${score}`);
Copier après la connexion
  • eg02 :
function test() {
  return "哈哈哈";
}
console.log(`我是神雕大侠,我在笑:${test()}`); // 我是神雕大侠,我在笑
Copier après la connexion

Méthodes pour compléter le tableau

1. forEach()

Parcourir le tableau et transmettre chaque élément parcouru à la fonction de rappel.

Aucune valeur de retour

let arr = [10, 20, 30, 40];
arr.forEach(function (item, index) {
  // item 就是遍历出来的每一项
  // index就是遍历出来的每一项对应的索引
  console.log(item, index);
});
Copier après la connexion

eg01 :

let arr = [10, 20, 30, 50, 33, 22];
let max = -Infinity;

arr.forEach((item, index) => {
  if (item > max) {
    max = item;
  }
});
console.log(max); // 50
Copier après la connexion

2. map()

En parcourant le tableau, il y a une valeur de retour

let arr = [10, 20, 30, 40];
let arrNew = arr.map(function (item, index) {
  // item 就是遍历出来的每一项
  // index就是遍历出来的每一项对应的索引
  //   console.log(item, index);
  return item * item;
});
console.log(arrNew); // [ 100, 400, 900, 1600 ]
Copier après la connexion

3. filter(); Filter

La méthode filter() renverra un nouveau tableau. Les éléments du nouveau tableau sont les éléments qui remplissent les conditions après avoir réussi la vérification

eg01:

let arr = [10, 20, 11, 21, 30, 31, 34, 56, 67];
let arrNew = arr.filter(function (item, index) {
  // item 就是遍历出来的每一项
  // index就是遍历出来的每一项对应的索引
  //   console.log(item, index);
  return item % 2 == 0; // 如果条件成立,会返回当前项,如果条件不成立,不会返回当前项
});
console.log(arrNew); // [ 10, 20, 30, 34, 56 ]
Copier après la connexion

eg02:

let arr = [
  { name: "波波", age: 38 },
  { name: "千里", age: 18 },
  { name: "哲锴", age: 28 },
  { age: 45 },
];

let arrNew = arr.filter((item, index) => {
  return item.name;
});
console.log(arrNew);
Copier après la connexion

Affectation supplémentaire de déstructuration d'objet

let obj = {
  name: "波波",
  age: 38,
  gender: "男",
  score: 100,
};

// 1.
// let { name, age, gender, score } = obj;
// console.log(name, age, gender, score); // 波波 38 男 100

// 2. obj2就相当于是obj对象里面除了name属性之前的属性们组成的一个对象
let { name, age, ...obj2 } = obj;
console.log(obj2); // { gender: '男', score: 100 }
Copier après la connexion

Réduction de dimensionnalité du tableau

1,

// 数组降维: 把二维数组降低地道一维数组
var arr = [
  [10, 20],
  [30, 40, 50],
  [60, 70],
];
// 使用扩展运算符...
var arrNew = [];
// 遍历二维数组
arr.forEach((v) => {
  //   console.log(v);
  arrNew.push(...v);
});
console.log(arrNew); // [10, 20, 30, 40, 50, 60, 70]
Copier après la connexion

2,

// 数组降维: 把二维数组降低地道一维数组
var arr = [10, 20, [30, 40, 50], 60, 70];
// 使用扩展运算符...
var arrNew = [];
// 遍历二维数组
arr.forEach((v) => {
  if (Array.isArray(v)) {
    arrNew.push(...v);
  } else {
    arrNew.push(v);
  }
});
console.log(arrNew); // [10, 20, 30, 40, 50, 60, 70]
Copier après la connexion

Déduplication de tableau

Déduplication de tableau : supprimer les éléments en double dans le tableau

  • Un : Méthode supplémentaire 1 pour la déduplication : Méthode de jugement après tri
var arrNew = [];
// 排序
arr.sort((a, b) => {
  return a - b;
});
console.log(arr); // [10, 10, 20, 20, 30, 40, 50]
// 判断
arr.forEach((v, i) => {
  if (v !== arr[i + 1]) {
    arrNew.push(v);
  }
});
console.log(arrNew); // [ 10, 20, 30, 40, 50 ]
Copier après la connexion
  • Deux : Méthode supplémentaire 2 pour la déduplication : Utiliser la méthode objet

Principe : Les propriétés du l'objet utilisé ne peut pas avoir le même nom

Révision de la syntaxe de l'objet :

Valeur :

Le nom de l'attribut n'existe pas, et celui retiré n'est pas défini

Le nom de l'attribut existe, et la valeur de l'attribut correspondante doit être retirée

Affectation :

Le nom de l'attribut n'existe pas, ce qui équivaut à ajouter dynamiquement l'attribut

Le nom de l'attribut existe, puis modifiez la valeur de l'attribut d'origine

var obj = {}; // 检测有没有重复的元素
var arrNew = []; // 去重后存放元素的数组
// 遍历要去重的数组
arr.forEach((v) => {
  // 判断
  if (obj[v] == undefined) {
    arrNew.push(v); // 不存在就把当前这个v存起来
    obj[v] = "值"; // 把当前这个元素作为obj对象的属性存进obj对象里
  }
});
console.log(arrNew); // [ 10, 20, 30, 40, 50 ]
Copier après la connexion

Mettre à niveau la dimension du tableau

var arr = [
    { type: "电子产品", name: "iPhone", price: 8888 },
    { type: "家具", name: "桌子", price: 100 },
    { type: "食品", name: "瓜子", price: 10 },
    { type: "家具", name: "椅子", price: 380 },
    { type: "电子产品", name: "小米手机", price: 1380 },
    { type: "食品", name: "辣条", price: 5 },
    { type: "食品", name: "咖啡", price: 50 },
];

var obj = {};
var arrNew = [];

arr.forEach((v) => {
    //   console.log(v);
    if (obj[v.type] === undefined) {
        // 第一次出现这个产品类型
        obj[v.type] = 1;
        // 把当前遍历出来的这个数据存进arrNew中
        arrNew.push({
            type: v.type,
            data: [v],
        });
    } else {
        arrNew.forEach((v2, j) => {
            if (v.type === v2.type) {
                arrNew[j].data.push(v);
            }
        });
    }
});
console.log(arrNew);
Copier après la connexion

Le résultat de sortie est le suivant :

Une brève discussion sur lutilisation de Set et Map dans Nodejs

Pour plus de connaissances liées à la programmation, veuillez visiter : Vidéo de programmation ! !

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:csdn.net
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