Open
Description
const object1 = {
a: 'somestring',
b: 42
};
for (const [key, value] of Object.entries(object1)) {
console.log(`${key}: ${value}`);
}
// "a: somestring"
// "b: 42"
const obj = { foo: 'bar', baz: 42 };
console.log(Object.entries(obj)); // [ ['foo', 'bar'], ['baz', 42] ]
// getFoo is property which isn't enumerable
const myObj = Object.create({}, { getFoo: { value() { return this.foo; } } });
myObj.foo = 'bar';
console.log(Object.entries(myObj)); // [ ['foo', 'bar'] ]
手写一个Object.entries()
Object.myEntries = function(o){
let res = [];
if(Object.prototype.toString.call(o) == '[object Object]'){
for(let key in o){
// 因为for...in会枚举原型链中的属性,所以要用hasOwnProperty
// 把不是原型链中的属性筛选出来
if(o.hasOwnProperty(key)){
let arr = [key, o[key]];
res.push(arr);
}
}
}
return res;
}
let test = {
a: 1,
b: 2
}
console.log(Object.myEntries(test)); // [ [ 'a', 1 ], [ 'b', 2 ] ]
let obj = {
a: 1,
b: 2
}
const arr = Object.entries(obj);
const newObj = Object.fromEntries(arr);
console.log(obj == newObj); // false