二:对象遍历
for...in(一般用来遍历对象)
for...in
语句以任意顺序遍历一个对象的除Symbol以外的可枚举属性。
注意:for...in循环一般用于对象的遍历,对于继承的属性默认是不可遍历到的;配合hasOwnProperty() 来确定某属性是否是对象本身的属性
例子1:(遍历对象)
const role = {
name:'superTiger',
blogName:'superTiger_y',
fav:'eat'
}
for(const key in role ){
console.log('键:',key)
console.log('值:',role[key])
}
例子2:(遍历数组)
const list = [1,2,3]
for(const key in list ){
console.log('键:',key)
console.log('值:',list[key])
}
for...of
for...of
语句在可迭代对象(包括 Array,Map,Set,String,TypedArray,arguments 对象等等)上创建一个迭代循环
例子1:遍历具有Iterator接口的对象
const array1 = ['a', 'b', 'c'];
for (const element of array1) {
console.log(element);
}
例子2:遍历不具有迭代器的对象(普通对象)
// TODO
Object.keys:(返回属性组成的字符串数组)
Object.keys() 方法会返回一个由一个给定对象的自身可枚举属性组成的数组
const arr = ['a', 'b', 'c'];
console.log(Object.keys(arr));
Object.values(返回属性值组成的字符串数组)
Object.values()方法返回一个给定对象自身的所有可枚举属性值的数组
const arr = ['a', 'b', 'c'];
console.log(Object.values(arr));
Object.entries()
Object.entries方法返回一个数组,成员是参数对象自身的(不含继承的)所有可遍历属性的键值对数组。
const obj = { foo: 'bar', baz: 42 };
console.log(Object.entries(obj))
Object.getOwnPropertyNames()
Object.
getOwnPropertyNames()
方法返回一个由指定对象的所有自身属性的属性名(包括不可枚举属性但不包括Symbol值作为名称的属性)组成的数组
const arr = ["a", "b", "c"];
console.log(Object.getOwnPropertyNames(arr).sort()); // ["0", "1", "2", "length"]
// 类数组对象
const obj = { 0: "a", 1: "b", 2: "c"};
console.log(Object.getOwnPropertyNames(obj).sort()); // ["0", "1", "2"]
// 使用Array.forEach输出属性名和属性值
Object.getOwnPropertyNames(obj).forEach(function(val, idx, array) {
console.log(val + " -> " + obj[val]);
});