是否有一种方法可以用未使用的变量解构对象?



那么基本上,可以将解构对象中未使用的部分压缩为变量吗?

这显然不起作用,因为"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()更快,更兼容浏览器。

最新更新