前言
JavaScript 中千奇百怪的语法很多
本文记录下楼主以前常用的遍历方式
由于楼主并非jser,仅会简单code,仅作简单code展示和表述
Code
数组
基本方式
最常见的for三段式遍历
let arr = [111, 222, 333, 444, 555]
for (let idx = 0; idx < arr.length; idx += 1) {
console.log("arr[", idx, "] = ", arr[idx])
}
in遍历
获取下标,再通过下标访问元素
let arr = [111, 222, 333, 444, 555]
// in 遍历下标
for (let idx in arr) {
console.log("arr[", idx, "] = ", arr[idx])
}
of遍历
迭代元素,每次迭代是一个副本
let arr = [111, 222, 333, 444, 555]
console.log(arr)
// of 遍历元素
// `num` 是副本不是引用
for (let num of arr) {
console.log(num)
num += 1
}
console.log(arr)
字符串
同数组
let str = "Hello World!"
for (let idx in str) {
console.log("str[" + idx + "] = " + str[idx])
}
for (let ch of str) {
console.log(ch)
}
JSON对象
in遍历可以获得其健值
let jsonObj = {
name: "Peak",
age: 18
}
for (let key in jsonObj) {
console.log("objArr[", key, "] = ", jsonObj[key]);
console.log(typeof jsonObj[key])
}
Map
和C++17的结构化绑定很像,但都是副本
let mp = new Map()
// num num
mp.set(123, 114514)
// num (num -> str)
mp.set(1, 12345)
mp.set(1, "-012345")
// str num
mp.set("1", Infinity)
// str str
mp.set("strKey", "value")
// str undefined
mp.set("emptyKey")
// 健与值 都是副本
for (let [key, val] of mp) {
console.log(key, '=', val)
console.log(typeof (val) + '\n')
}