对一个对象进行过滤,返回value为string的key
let obj = {
name: 'lisi',
Age: 18,
class: 9,
addr: 'xxx'
}
for (const i in obj) {
console.log(i);//name age class addr (i直接就是对象的键)
console.log(obj[i]);//输出的就是键值lisi 18 9 xxx
// 判断键值是否是字符串类型,如果是就输出对应的键
if(typeof obj[i] === "string"){
console.log(i);
}
}
第二种方法
let obj = {
name: 'lisi',
Age: 18,
class: 9,
addr: 'xxx'
}
//Object.entries()方法返回一个给定对象自身可枚举属性的键值对数组,其排列与使用 for...in 循环遍历该对象时返回的顺序一致(区别在于 for-in 循环还会枚举原型链中的属性)。
var a = Object.entries(obj);
// console.log(a);
for (const i of a) {
// console.log(i);
if(typeof i[1] === "string") {
console.log(i[0]);
}
}
第三种方法
需要参考以下的内置方法
Object.keys() 方法会返回一个由一个给定对象的自身可枚举属性组成的数组,数组中属性名的排列顺序和使用 for…in 循环遍历该对象时返回的顺序一致 。
// simple array
var arr = ['a', 'b', 'c'];
console.log(Object.keys(arr)); // console: ['0', '1', '2']
// array like object
var obj = { 0: 'a', 1: 'b', 2: 'c' };
console.log(Object.keys(obj)); // console: ['0', '1', '2']
Object.values()方法返回一个给定对象自身的所有可枚举属性值的数组,值的顺序与使用for…in循环的顺序相同 ( 区别在于 for-in 循环枚举原型链中的属性 )。
// array like object
var obj = { 0: 'a', 1: 'b', 2: 'c' };
console.log(Object.values(obj)); // ['a', 'b', 'c']
还有一个map方法需要知道,需要遍历一个数组或者对象都是可以用的(推荐使用)
注意:map方法回调函数中有是三个参数,第一个currentValue为当前正在处理的元素,第二个为可选参数,当前处理元素的索引,第三个参数也是可选,为当前map调用的数组
map() 方法创建一个新数组,其结果是该数组中的每个元素都调用一个提供的函数后返回的结果。
以下是实现的代码
let obj = {
name: 'lisi',
Age: 18,
class: 9,
addr: 'xxx'
}
var a = Object.keys(obj);
var b = Object.values(obj);
var bb = b.map(function(x,i) {
if(typeof x === "string") {
console.log(a[i]);
}
})