对象部分属性解构到新对象的几种方法

7,868 阅读1分钟

1.正常取值法

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

2.利用 JSON.stringify 第二个参数取值

const obj = {
  a: 1,
  b: 2,
  c: 3,
};
/**
 * JSON.stringify(value[, replacer[, space]])
 * value:必需, 要转换的 JavaScript 值(通常为对象或数组)。
 * replacer:可选。用于转换结果的函数或数组。
 * 如果 replacer 为函数,则 JSON.stringify 将调用该函数,并传入每个成员的键和值。使用返回值而不是原始值。如果此函数返回 undefined,则排除成员。根对象的键是一个空字符串:""。
 * 如果 replacer 是一个数组,则仅转换该数组中具有键值的成员。成员的转换顺序与键在数组中的顺序一样
 * */
const new_obj = JSON.parse(JSON.stringify(obj, ["a", "b"]));
console.log(new_obj); // { a:1, b:2 }

3.利用 ES6 解构剔除无用对象

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

4.利用 ES6 解构赋值

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

5.利用匿名方法以及 ES6 解构赋值

const obj = {
  a: 1,
  b: 2,
  c: 3,
};
const new_obj = (({ a, b }) => ({ a, b }))(obj);
console.log(new_obj); // { a:1, b:2 }

还有其他方式的话欢迎留言交流学习