当前位置: 首页 > news >正文

网站建设公司营销推广合肥网站优化推广方案

网站建设公司营销推广,合肥网站优化推广方案,网站备案接入服务单位,东莞网站推广公司Map 是 JavaScript 中的一个内置对象,它是一种键值对的集合,类似于对象(Object),但有一些重要的区别和优势。Map 提供了更强大的功能,特别是在处理键值对时更加灵活和高效。 1. Map 的基本特性 &#xff…

Map 是 JavaScript 中的一个内置对象,它是一种键值对的集合,类似于对象(Object),但有一些重要的区别和优势。Map 提供了更强大的功能,特别是在处理键值对时更加灵活和高效。

1. Map 的基本特性

(1)键值对
  • Map 是一个简单的键值对集合,其中每个键都映射到一个值。

  • 键可以是任何数据类型(包括对象、函数等),而不仅仅是字符串或符号(Symbol)。

  • 值也可以是任何数据类型。

(2)保持插入顺序
  • Map 会按照插入的顺序保存键值对。这意味着当你遍历 Map 时,键值对会按照插入的顺序返回。

(3)动态大小
  • Map 的大小是动态的,可以根据需要添加或删除键值对。

2. 创建 Map

可以通过以下方式创建一个 Map

const myMap = new Map();

 也可以通过一个数组的数组(键值对数组)初始化 Map

const myMap = new Map([['key1', 'value1'],['key2', 'value2'],[3, 'value3'],[{ id: 1 }, 'value4'],
]);

3. Map 的常用方法

(1)set(key, value):添加或更新键值对

(2)保持插入顺序

(3)动态大小

2. 创建 Map

可以通过以下方式创建一个 Map

JavaScript

复制

const myMap = new Map();

也可以通过一个数组的数组(键值对数组)初始化 Map

JavaScript

复制

const myMap = new Map([['key1', 'value1'],['key2', 'value2'],[3, 'value3'],[{ id: 1 }, 'value4'],
]);

3. Map 的常用方法

(1)set(key, value):添加或更新键值对

JavaScript

复制

myMap.set('key1', 'newValue1');
myMap.set('key3', 'value3');
(2)get(key):获取键对应的值

JavaScript

复制

console.log(myMap.get('key1')); // 输出: newValue1
console.log(myMap.get('key3')); // 输出: value3
console.log(myMap.get('key4')); // 输出: undefined
(3)has(key):检查键是否存在

JavaScript

复制

console.log(myMap.has('key1')); // 输出: true
console.log(myMap.has('key4')); // 输出: false
(4)delete(key):删除键值对

JavaScript

复制

console.log(myMap.delete('key1')); // 输出: true
console.log(myMap.delete('key4')); // 输出: false
(5)clear():清空所有键值对

JavaScript

复制

myMap.clear();
(6)size:获取键值对的数量

JavaScript

复制

console.log(myMap.size); // 输出: 0(如果已经调用了 clear)

4. 遍历 Map

Map 提供了多种遍历方式,包括 for...of 循环、forEach 方法等。

(1)for...of 循环

(2)性能

(3)保持顺序

(4)内置方法

  • 如果键已存在,则更新其值。

  • 如果键不存在,则添加新的键值对。

    myMap.set('key1', 'newValue1');
    myMap.set('key3', 'value3');
    (2)get(key):获取键对应的值
  • 如果键存在,返回对应的值。

  • 如果键不存在,返回 undefined

    console.log(myMap.get('key1')); // 输出: newValue1
    console.log(myMap.get('key3')); // 输出: value3
    console.log(myMap.get('key4')); // 输出: undefined
    (3)has(key):检查键是否存在
  • 如果键存在,返回 true

  • 如果键不存在,返回 false

    console.log(myMap.has('key1')); // 输出: true
    console.log(myMap.has('key4')); // 输出: false
    (4)delete(key):删除键值对
  • 如果键存在,删除键值对并返回 true

  • 如果键不存在,返回 false

    console.log(myMap.delete('key1')); // 输出: true
    console.log(myMap.delete('key4')); // 输出: false
    (5)clear():清空所有键值对
  • 删除 Map 中的所有键值对。

    myMap.clear();
    (6)size:获取键值对的数量
  • 返回 Map 中的键值对数量。

    console.log(myMap.size); // 输出: 0(如果已经调用了 clear)

    Map 是 JavaScript 中的一个内置对象,它是一种键值对的集合,类似于对象(Object),但有一些重要的区别和优势。Map 提供了更强大的功能,特别是在处理键值对时更加灵活和高效。

    1. Map 的基本特性

    (1)键值对
  • Map 是一个简单的键值对集合,其中每个键都映射到一个值。

  • 键可以是任何数据类型(包括对象、函数等),而不仅仅是字符串或符号(Symbol)。

  • 值也可以是任何数据类型。

  • Map 会按照插入的顺序保存键值对。这意味着当你遍历 Map 时,键值对会按照插入的顺序返回。

  • Map 的大小是动态的,可以根据需要添加或删除键值对。

  • 如果键已存在,则更新其值。

  • 如果键不存在,则添加新的键值对。

  • 如果键存在,返回对应的值。

  • 如果键不存在,返回 undefined

  • 如果键存在,返回 true

  • 如果键不存在,返回 false

  • 如果键存在,删除键值对并返回 true

  • 如果键不存在,返回 false

  • 删除 Map 中的所有键值对。

  • 返回 Map 中的键值对数量。

  • 遍历 Map 的键值对。

    const myMap = new Map([['key1', 'value1'],['key2', 'value2'],
    ]);for (const [key, value] of myMap) {console.log(key, value);
    }
    // 输出:
    // key1 value1
    // key2 value2
    (2)forEach 方法
  • 遍历 Map 的键值对。

    myMap.forEach((value, key) => {console.log(key, value);
    });
    // 输出:
    // key1 value1
    // key2 value2
    (3)keys()values() 和 entries() 方法
  • keys():返回一个包含所有键的迭代器。

  • values():返回一个包含所有值的迭代器。

  • entries():返回一个包含所有键值对的迭代器。

    for (const key of myMap.keys()) {console.log(key);
    }
    // 输出:
    // key1
    // key2for (const value of myMap.values()) {console.log(value);
    }
    // 输出:
    // value1
    // value2for (const [key, value] of myMap.entries()) {console.log(key, value);
    }
    // 输出:
    // key1 value1
    // key2 value2

    5. Map 与 Object 的区别

    (1)键的类型
  • Object:键只能是字符串或符号(Symbol)。

  • Map:键可以是任何数据类型(包括对象、函数等)。

  • Object:在处理大量数据时,性能可能会下降,尤其是在频繁添加和删除键值对时。

  • Map:在处理大量数据时性能更好,尤其是在频繁添加和删除键值对时。

  • Object:不保证键的顺序。

  • Map:按照插入顺序保存键值对,遍历时会按照插入顺序返回。

  • Object:没有内置的 size 属性或 clear 方法。

  • Map:提供了 size 属性和 clear 方法。

  • Object:没有内置的 size 属性或 clear 方法。

  • Map:提供了 size 属性和 clear 方法。

6. 使用场景

Map 适用于以下场景:

  • 需要存储键值对,且键的类型不局限于字符串或符号。

  • 需要频繁添加和删除键值对。

  • 需要保持键值对的插入顺序。

  • 需要高效地遍历键值对。

7. 示例:使用 Map 处理三级下拉框数据

以下是一个完整的示例,展示如何在 Vue 2 中使用 Map 处理三级下拉框的数据。

 数据结构

const data = [{id: 1,name: '省份1',cities: [{id: 11,name: '城市1-1',areas: [{ id: 111, name: '区域1-1-1' },{ id: 112, name: '区域1-1-2' },],},{id: 12,name: '城市1-2',areas: [{ id: 121, name: '区域1-2-1' },{ id: 122, name: '区域1-2-2' },],},],},{id: 2,name: '省份2',cities: [{id: 21,name: '城市2-1',areas: [{ id: 211, name: '区域2-1-1' },{ id: 212, name: '区域2-1-2' },],},{id: 22,name: '城市2-2',areas: [{ id: 221, name: '区域2-2-1' },{ id: 222, name: '区域2-2-2' },],},],},
];

 Vue 组件

<template><div><h1>三级下拉框示例</h1><el-selectv-model="selectedProvince"placeholder="请选择省份"@change="onProvinceChange"><el-optionv-for="province in data":key="province.id":label="province.name":value="province.id"></el-option></el-select><el-selectv-model="selectedCity"placeholder="请选择城市"@change="onCityChange":disabled="!selectedProvince"><el-optionv-for="city in provinceMap.get(selectedProvince)?.cities":key="city.id":label="city.name":value="city.id"></el-option></el-select><el-selectv-model="selectedArea"placeholder="请选择区域"@change="onAreaChange":disabled="!selectedCity"><el-optionv-for="area in cityMap.get(selectedCity)?.areas":key="area.id":label="area.name":value="area.id"></el-option></el-select></div>
</template><script>
export default {data() {return {data, // 原始数据provinceMap: new Map(), // 省份 MapcityMap: new Map(), // 城市 MapselectedProvince: null, // 选中的省份selectedCity: null, // 选中的城市selectedArea: null, // 选中的区域};},created() {this.initializeMaps();},methods: {initializeMaps() {// 初始化省份 Mapthis.data.forEach(province => {this.provinceMap.set(province.id, province);province.cities.forEach(city => {this.cityMap.set(city.id, city);});});},onProvinceChange(provinceId) {this.selectedProvince = provinceId;this.selectedCity = null;this.selectedArea = null;},onCityChange(cityId) {this.selectedCity = cityId;this.selectedArea = null;},onAreaChange(areaId) {this.selectedArea = areaId;},},
};
</script>

代码解释

(1)initializeMaps 方法
  • created 钩子中调用 initializeMaps 方法。

  • 将省份和城市的数据分别存储到 provinceMapcityMap 中。

  • 这样可以快速通过省份 ID 获取省份数据,通过城市 ID 获取城市数据。

(2)onProvinceChange 方法
  • 当省份发生变化时,更新 selectedProvince

  • 清空城市和区域的选择,因为省份变化后,城市和区域的选择需要重新选择。

(3)onCityChange 方法
  • 当城市发生变化时,更新 selectedCity

  • 清空区域的选择,因为城市变化后,区域的选择需要重新选择。

(4)onAreaChange 方法
  • 当区域发生变化时,更新 selectedArea

(5)模板中的动态绑定
  • 使用 v-model 绑定选中的省份、城市和区域的 ID。

  • 使用 v-for 动态生成下拉框的选项。

  • 使用 :disabled 属性控制下拉框的启用状态,确保只有在选中上一级时才能选择下一级。

效果

运行项目后,你将看到一个包含三级下拉框的页面。选择省份后,城市下拉框会动态更新;选择城市后,区域下拉框会动态更新。

 

总结

通过使用 Map 处理三级下拉框的数据,可以实现高效的级联选择功能。这种方式不仅代码清晰,而且性能优越,特别适合处理复杂的数据结构。


文章转载自:
http://anticholinesterase.c7500.cn
http://pseudoclassic.c7500.cn
http://remittee.c7500.cn
http://soaraway.c7500.cn
http://prudent.c7500.cn
http://subjoin.c7500.cn
http://anomalous.c7500.cn
http://rupestrian.c7500.cn
http://tahsildar.c7500.cn
http://sultana.c7500.cn
http://casualties.c7500.cn
http://microfibril.c7500.cn
http://ningyoite.c7500.cn
http://occipital.c7500.cn
http://akyab.c7500.cn
http://crwth.c7500.cn
http://footstool.c7500.cn
http://mollweide.c7500.cn
http://amazonite.c7500.cn
http://rapist.c7500.cn
http://debrecen.c7500.cn
http://fantasist.c7500.cn
http://hogman.c7500.cn
http://cataclasis.c7500.cn
http://reapportionment.c7500.cn
http://dishes.c7500.cn
http://transparent.c7500.cn
http://batum.c7500.cn
http://cession.c7500.cn
http://shedder.c7500.cn
http://chinquapin.c7500.cn
http://psychasthenia.c7500.cn
http://deputize.c7500.cn
http://deliverance.c7500.cn
http://whitish.c7500.cn
http://pettitoes.c7500.cn
http://garlicky.c7500.cn
http://enquiring.c7500.cn
http://dalles.c7500.cn
http://overstaff.c7500.cn
http://impalpably.c7500.cn
http://ladder.c7500.cn
http://chela.c7500.cn
http://unstick.c7500.cn
http://senescent.c7500.cn
http://weightlessness.c7500.cn
http://newspaperdom.c7500.cn
http://dialyzate.c7500.cn
http://snuff.c7500.cn
http://inaccuracy.c7500.cn
http://spiritedly.c7500.cn
http://nonneoplastic.c7500.cn
http://barmy.c7500.cn
http://garnet.c7500.cn
http://disavow.c7500.cn
http://enunciation.c7500.cn
http://amphion.c7500.cn
http://reconquest.c7500.cn
http://boatmanship.c7500.cn
http://chinquapin.c7500.cn
http://aristaeus.c7500.cn
http://glycoside.c7500.cn
http://pilonidal.c7500.cn
http://telos.c7500.cn
http://declension.c7500.cn
http://segmentation.c7500.cn
http://incursive.c7500.cn
http://prolotherapy.c7500.cn
http://hyposcope.c7500.cn
http://crook.c7500.cn
http://caroche.c7500.cn
http://microcephaly.c7500.cn
http://sab.c7500.cn
http://flavomycin.c7500.cn
http://sophisticator.c7500.cn
http://longawaited.c7500.cn
http://superconscious.c7500.cn
http://gardenia.c7500.cn
http://nonrated.c7500.cn
http://hooper.c7500.cn
http://thulia.c7500.cn
http://dawdle.c7500.cn
http://pomade.c7500.cn
http://snapper.c7500.cn
http://mnemonic.c7500.cn
http://pretty.c7500.cn
http://daimler.c7500.cn
http://nought.c7500.cn
http://tachyauxesis.c7500.cn
http://chimerism.c7500.cn
http://vews.c7500.cn
http://wastelot.c7500.cn
http://cephalothorax.c7500.cn
http://fragmented.c7500.cn
http://surmountable.c7500.cn
http://superciliousness.c7500.cn
http://zendo.c7500.cn
http://kelep.c7500.cn
http://emergent.c7500.cn
http://palmyra.c7500.cn
http://www.zhongyajixie.com/news/66736.html

相关文章:

  • 企业静态网站源码互联网推广渠道
  • 苏州中心疫情广州seo外包
  • 做网站需要学习哪些郑州网站运营专业乐云seo
  • mooc网站开发案例武汉建站公司
  • 什么软件可以看网站深圳竞价托管
  • 番禺网站排名优化公司seo学徒是做什么
  • 个人可以做社区网站软文什么意思
  • 手机看网站整站优化seo公司哪家好
  • 社保网站做员工用工备案吗百度推广怎么操作流程
  • win7的iis怎么制作网站泸州网站优化推广
  • 一个完整网站制作的实例网站排名优化客服
  • 网站备案查询流程网络培训学校
  • 网站开发cms广州seo培训
  • 素锦wordpress主题修改合肥seo优化
  • 西安在线网站制作seo顾问赚钱吗
  • 小城镇建设的网站sem优化软件选哪家
  • 做网站有前途性价比高seo排名优化的
  • 手机网站 程序百度外包公司有哪些
  • 男生跟男生做口视频网站seo网络推广案例
  • 做网站前端用什么抖音推广平台
  • 企业网设计案例分析吴中seo页面优化推广
  • 南京做征信服务的公司网站论坛推广技巧
  • 自己怎么做网站免费的网推平台有哪些比较好
  • 1920网站banner背景站长之家产品介绍
  • redhat7做网站过程中国市场营销网网站
  • 网页制作怎么做多个网站网站seo优化心得
  • 交通建设网站百度识图官网
  • 广州专业网站可免费投放广告的平台
  • 如何确定网站被k最大的搜索网站排名
  • 网站服务器申请西安高端模板建站