Skip to content

entries、FromEntries #168

Open
Open
@TieMuZhen

Description

@TieMuZhen

image

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 ] ]

image

let obj = {
    a: 1,
    b: 2
}
const arr = Object.entries(obj);
const newObj = Object.fromEntries(arr);
console.log(obj == newObj); // false

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions