js 数组对象迭代 keys() values() entries()
ヤッハロー、Kaiqisanすうう、一つふつうの学生プログラマである,这次再讲讲关于数组对象迭代的新的方法。
这仨方法用于枚举和自动遍历,可以方便遍历的过程,虽然它们各有分工,需要选择使用
Object.keys(val)
: 获取您传入的参数的所有成员的键名。有返回值,需要参数接收
let obj = {
name: 'kaiqisan',
uid: 1001,
sex: false
}
let a = Object.keys(obj)
console.log(a) // ["name", "uid", "sex"]
也可以传入数组,获取数组的下标,因为js中, 数组本质也是对象,它的下标本质上是对象里的键。
let arr = ['a', 'b', 'c', 'dd']
let a = Object.keys(arr)
console.log(a) // ["0", "1", "2", "3"]
let arr = ['a', 'b', 'c', 'dd']
arr.name = 'normal'
let a = Object.keys(arr)
console.log(a) // ["0", "1", "2", "3", "name"]
这里支持传入字符串,可以达到分割每一个字符的效果
let a = Object.keys('hello')
console.log(a) // ["0", "1", "2", "3", "4"] 五个字符,就有五个下标
Object.values(val)
: 获取您传入的参数的所有成员的值。有返回值,需要参数接收
let obj = {
name: 'kaiqisan',
uid: 1001,
sex: false
}
let a = Object.values(obj)
console.log(a) // ["kaiqisan", 1001, false]
数组也可以
let arr = ['a', 'b', 'c', 'dd']
let a = Object.values(arr)
console.log(a) // ["a", "b", "c", "dd"]
let arr = ['a', 'b', 'c', 'dd']
arr.name = 'normal'
let a = Object.values(arr)
console.log(a) // ["a", "b", "c", "dd", "normal"]
字符也可以
let a = Object.keys('hello')
console.log(a) // ["h", "e", "l", "l", "o"] 五个字符,就有五个下标
Object.entries(val)
: 获取您传入的参数的所有成员的值和键名。有返回值,需要参数接收
let obj = {
name: 'kaiqisan',
uid: 1001,
sex: false
}
let a = Object.entries(obj)
console.log(a) // [["name", "kaiqisan"], ["uid", 1001], ["sex", false]] 是二维数组
数组也可以
let arr = ['a', 'b', 'c', 'dd']
let a = Object.entries(arr)
console.log(a) // [["0", "a"], ["1", "b"], ["2", "c"], ["3", "dd"]]
let arr = ['a', 'b', 'c', 'dd']
arr.name = 'normal'
let a = Object.entries(arr)
console.log(a) // [["0", "a"], ["1", "b"], ["2", "c"], ["3", "dd"], ["name", "normal"]]
字符也可以
let a = Object.entries('hello')
console.log(a) // [["0", "h"], ["1", "e"], ["2", "l"], ["3", "l"], ["4", "o"]]
PS:上述方法不可迭代null undefined,否则必报错,数字也不可以,否则返回一个空字符串
总结
上面讲的都是这仨方法的最基础的使用方法,代码也都是从MDN上看来自己试验出来的结果,下一次,我们将从较底层出发了解迭代和上面的方法的机制。
///立个flag,这一行将在未来变成一个网址。