es6解构获得对象的一部分属性?

    const obj = {
        name: 'jack',
        id: 1,
        birthday: '12-07-09',
        phone: 1232131231
    };

如何最简单的解构将上述对象解构为下面的对象:

    const obj_new = {
        name: 'jack',
        id: 1
    };
阅读 13.6k
6 个回答

你这得分两步,解构和组合。
解构不是"先解析+再构成",取属性并赋值给到不同的变量的过程叫解构。
数组一定程度上可以,对象不行。

const arr = [1, 2, 3, 4]
const [ , , ...newArr] = arr
const { id, name } = obj;
const newObj = { id, name }

可以是可以,但是不太安全,尤其是在全局作用域,name、id 都会去找最近一级的变量,在局部作用域里用好些

 const obj = {
        name: 'jack',
        id: 1,
        birthday: '12-07-09',
        phone: 1232131231
    };

let {name,id}=obj;
console.log(result={name,id});//{ name: 'jack', id: 1 }

不知道你的具体业务场景是什么样子的,实现这个需求方式比较多:

  1. 既然你已经知道想要的属性,完全可以简单的对象赋值
const newObj = {
    name:obj.name
    /** ... **/
}
  1. 如果属性比较多可以自己封装个简单的函数
function copy({name,id}){
  return {
      name,
      id
  }
}

如果你的对象是JSON安全的,那可以用JSON方法

 const obj = {
    name: 'jack',
    id: 1,
    birthday: '12-07-09',
    phone: 1232131231
};
const obj_new = JSON.parse(JSON.stringify(obj,["name","id"]));

可以自己封装个方法。

推荐问题
宣传栏