对象的处理方法

82 阅读1分钟

Object.assign()

用于将所有可枚举属性的值从一个或多个源对象分配到目标对象。它将返回目标对象。常用来合并对象。(如果源对象中的属性具有相同的键,则目标对象中的属性会被源中的属性覆盖)

const obj1={a:1,b:2}
const obj2={c:3,d:4}
const newObj=Object.assign(obj1,obj2)
console.log(obj1)       //{a:1,b:2,c:3,d:4}
console.log(obj2)      //{c:3,d:4}
console.log(newObj)   //{a:1,b:2,c:3,d:4}
//具有相同的键
const obj1={a:1,b:2}
const obj2={b:3,d:4}
const newObj=Object.assign(obj1,obj2)
console.log(obj1)       //{a:1,b:3,d:4}
console.log(obj2)      //{b:3,d:4}
console.log(newObj)   //{a:1,b:3,d:4}

Object.entries()

返回对象的自身可枚举属性的[key:vakue]组成的数组

 const obj = { a: 1, b: 2, c: 3 };
  console.log(Object.entries(obj))
  /**
     * [
     * [a,1],
     * [b,2],
     * [c,3],
     * ]
     */
  for (const [key, value] of Object.entries(obj)) {
      console.log(key,value)
      /**
       * a 1
       * b 2
       * c 3
       */
    }

for-in

const obj = { a: 1, b: 2, c: 3 };
for (let item in obj) {
   console.log(item);
   /**
    * a
    * b
    * c
    */
    };

Object.fromEntries

Object.entries()的逆向操作

 const arr = [['a', 1], ['b', 2]]
 console.log(Object.fromEntries(arr)) //{a:1,b:2}

Object.values()

返回对象自身可枚举的属性值value组成的数组

 const obj = { a: 1, b: 2, c: 3 };
 console.log(Object.values(obj))
    /**
     * [1,2,3]
     */

Object.keys(obj)

返回对象自身可枚举的属性key组成的数组

 const obj = { a: 1, b: 2, c: 3 };
 console.log(Object.keys(obj))
    /**
     * [a,b,c]
     */

hasOwnProperty()

判断对象是否包含某个属性,返回一个布尔值

const obj = { a: 1, b: 2, c: 3 };
console.log(obj.hasOwnProperty('a')); //true
console.log(obj.hasOwnProperty('d')); //false

Object.hasOwn(obj,prop)

判断对象是否包含某个属性,返回一个布尔值

const obj = { a: 1, b: 2, c: 3 };
console.log(Object.hasOwn(obj, 'a')); //true
console.log(Object.hasOwn(obj, 'd')); //false

Object.freeze()

冻结对象,使之不可更改

 const obj = { a: 1, b: 2, c: 3 };
    Object.freeze(obj)
    obj.a = 4   //Cannot assign to read only property 'a' of object '#<Object>'

Object.isFrozen()

判断对象是否被冻结

 const obj = { a: 1, b: 2, c: 3 };
 Object.freeze(obj)
 console.log(Object.isFrozen(obj))  //true