那么基本上,可以将解构对象中未使用的部分压缩为变量吗?
这显然不起作用,因为"toss"已经声明,
这只是为了说明问题
const obj = { a:1, b:2, c:3, d:4 }
const toss = {b,c};
const {...toss, ...keep} = obj;
console.log(keep); // { a:1, d:4 }
如果toss
是要忽略的键列表-那么您可以将其定义为字符串数组-而不是您定义它的无效方式,这会抛出错误
然后是简单的一行(可能还有其他方法,javascript中总是这样,这是我首先想到的)
const obj = { a: 1, b: 2, c: 3, d: 4 }
const toss = ['b', 'c'];
const keep = Object.fromEntries(Object.entries(obj).filter(([k]) => !toss.includes(k)))
console.log(keep);
更简单,因为你的代码都是硬编码的
const obj = { a: 1, b: 2, c: 3, d: 4 }
const {b, c, ...keep} = obj;
console.log(keep);
试试这个
const _0 = {'a': 1, 'b': 2, 'c': 3, 'd': 4};
const _1 = {'a': 1, 'b': 2, 'c': 4};
const _2 = function(_0, _1) {
let _2 = Object.keys(_0);
let _3 = _2.length;
let _4 = '';
let _5 = {};
let _6 = 0;
while (_6 !== _3) {
_4 = _2[_6++];
if (typeof _1[_4] === 'undefined' || _0[_4] !== _1[_4]) {
_5[_4] = _0[_4];
}
}
return _5;
};
const _3 = _2(_0, _1);
console.log(_3);
这允许使用{'key': value}
对比较来解构,而不是使用键数组。
使用Object.keys()
的while()
循环也比Object.entries()
更快,更兼容浏览器。