在JavaScript中,我可以刪除對象的鍵與JavaScript - 內置刪除對象中的多個鍵的函數?
delete myObject[myKey];
有時候,我需要刪除相當多的按鍵,但不是所有的父項封裝我想刪除鍵的值。
是否有一種有效的方法來刪除多個鍵使用一條線?一些看起來像:
multiDelete myObject[keyOne, keyTwo, keyThree];
在JavaScript中,我可以刪除對象的鍵與JavaScript - 內置刪除對象中的多個鍵的函數?
delete myObject[myKey];
有時候,我需要刪除相當多的按鍵,但不是所有的父項封裝我想刪除鍵的值。
是否有一種有效的方法來刪除多個鍵使用一條線?一些看起來像:
multiDelete myObject[keyOne, keyTwo, keyThree];
沒有內置的功能,但你可以做到這一點的方法之一是在multidelete
方法添加到對象原型。這可能有點矯枉過正,但你可能會覺得它有用。
if (!('multidelete' in Object.prototype)) {
Object.defineProperty(Object.prototype, 'multidelete', {
value: function() {
for (var i = 0; i < arguments.length; i++) {
delete this[arguments[i]];
}
}
});
}
var obj = { a: 1, b: 2, c: 3, d: 4, e: 5 };
obj.multidelete('c', 'e'); // { a: 1, b: 2, d: 4 };
如果你打算循環這些參數,那麼不需要先切片。另外,'enumerable'和'configurable'默認爲'false',不需要明確指定。 –
這裏是一個一行類似於你的要求是什麼。
var obj = {a: 1, b: 2, c: 3, d: 4, e: 5 };
['c', 'e'].forEach(e => delete obj[e]);
// obj is now {a:1, b:2, d:4}
沒有內置的js函數刪除多個鑰匙了,你可以使用任何庫這如underscore.js
做到這一點。
_.omit({name: 'moe', age: 50, userid: 'moe1'}, 'userid');
=> {name: 'moe', age: 50}
//or you can use function to filter keys
_.omit({name: 'moe', age: 50, userid: 'moe1'}, function(value, key, object){
return _.isNumber(value);
});
=> {name: 'moe', userid: 'moe1'}
從什麼角度看效率?首先,使用'delete'已經是低效率的了。 – zerkms
*但不是封裝我想刪除的密鑰的父密鑰中的所有值*您能否澄清? 「父母鑰匙」或「封裝鑰匙」是什麼意思? –