Object.keys()
ES5 引入了Object.keys方法,返回参数对象自身的(不含继承的)所有可遍历( enumerable )属性的键名。
注意:返回的是字符串形式的数组。
传入对象,返回属性名
var data={a:1,b:2,c:9,d:4,e:5};
console.log(Object.keys(data));//["a", "b", "c", "d", "e"]
Object.keys(data).map((key,item)=>{
console.log(key,data[key]);//key=>属性名 data[key]=>属性值
});
传入字符串,返回索引
var str = 'ab1234';
console.log(Object.keys(obj)); //[0,1,2,3,4,5]
传入数组 返回索引
var arr = ["a", "b", "c"];
console.log(Object.keys(arr)); // console: ["0", "1", "2"]
构造函数 返回空数组
注意:实例化对象传入的值组成的数组
function Pasta(name, age, gender) {
this.name = name;
this.age = age;
this.gender = gender;
this.toString = function () {
return (this.name + ", " + this.age + ", " + this.gender);
}
}
console.log(Object.keys(Pasta)); //console: []
var spaghetti = new Pasta("Tom", 20, "male");
console.log(Object.keys(spaghetti)); //console: ["name", "age", "gender", "toString"]
实用技巧
let zhangsan={
name:"张三",
age:18,
gender:"male"
}
Object.keys(zhangsan).map(key=>{
console.log(key+':'+zhangsan[key]);
})
// name:张三
// age:18
// gender:male
Object.values()
Object.values方法返回一个数组,成员是参数对象自身的(不含继承的)所有可遍历( enumerable )属性的键值。
①对象,返回对象的value值组成的数组(字符串)
let zhangsan={
name:"张三",
age:18,
gedner:"male"
}
console.log(Object.values(zhangsan));//[ '张三', 18, 'male' ]
②数组,返回该数组(字符串)
let arr = [20,10,30];
console.log(Object.values(arr));//[ 20, 10, 30 ]
③字符串,返回单个字符组成的数组(字符串)
let str = "hello";
console.log(Object.values(str));//[ 'h', 'e', 'l', 'l', 'o' ]
④构造函数,返回空数组或实例化对象传入的值组成的数组
function Fn(name,age,gender){
this.name=name;
this.age=age;
this.gender=gender;
}
console.log(Object.values(Fn));//[]
let mark = new Fn("mark",18,"male");
console.log(Object.values(mark));//[ 'mark', 18, 'male' ]
与Object.keys()相同的是:当传入的对象的键为整数类型时,Object.values()会返回有序的值组成的数组。
let obj = {40:"mark",20:18,30:"male"};
console.log(Object.keys(obj));
console.log(Object.values(obj));
// [ '20', '30', '40' ]
// [ 18, 'male', 'mark' ]
Object.entries()
Object.entries方法返回一个数组,成员是参数对象自身的(不含继承的)所有可遍历( enumerable )属性的键值对数组。