Javascript 省略对象项

Javascript 省略对象项,javascript,Javascript,所以这是可行的: var object = { 'a': 1, 'b': '2', 'c': 3 }; // Underscore/Lodash var result = _.omit(object, ['a', 'c']); console.log(result) // output: { 'b': '2' } // Native var { a, c, ...result2 } = object; console.log(result2) // output: { 'b': '2' }

所以这是可行的:

var object = { 'a': 1, 'b': '2', 'c': 3 };

// Underscore/Lodash
var result = _.omit(object, ['a', 'c']);
console.log(result)
// output: { 'b': '2' }

// Native
var { a, c, ...result2 } = object;
console.log(result2)
// output: { 'b': '2' }
。。。但如果我的钥匙有破折号,则无法使用:

var object={'my key':1,'b':'2','my secret':3};
//下划线/洛达斯
var result=551;.omit(对象,['a','c']);
console.log(结果)
//输出:{b':'2'}
//土生土长的
var{'my key','my secret',…result2}=object;
console.log(result2)
//错误:SyntaxError:缺少:在属性id之后“,

//预期输出:{'b':'2'}
当您像这样使用析构函数时,您正在为名称赋值,即使您没有使用它们。
我的键
不是有效的变量名,因此无法重新构造为该名称。但是,您可以在析构函数中重命名键,以避免出现以下问题:

var对象={'my key':1,'b':'2','my-secret':3};
var{'my-key':k,'my-secret':k2,…result2}=object;

console.log(result2)
在一些快速测试中,它与破折号无关,而是与使用带引号的属性键有关(例如,如果将
a
替换为
'a'
),也会发生同样的情况)。@JohnMontgomery如果没有带引号,破折号就是语法错误。@MarkMeyer我从来没有说过它不是。