使用内置的lodash函数,是否可以传入一个对象和一个键列表,并从对象中删除键/值对并放入一个返回的新对象中。一个例子:
var obj = {a: 1, b: 2, c: 3};
pluck(obj, ['a', 'b']) // returns {a: 1, b: 2}
console.log(obj) // {c: 3}
其中pluck被一个或多个lodash函数替换。
答案 0 :(得分:1)
obj = _.pick(obj, ['a', 'b']); // { a: 1, b: 2 }
对于新对象:
var newobj = _.omit(obj, ['a', 'b']); // { c: 3 }
答案 1 :(得分:0)
我不认为lodash有任何内置的东西。不过,只需使用JavaScript原生功能,您就可以轻松完成:
var obj = {a: 1, b: 2, c: 3};
console.log(['a', 'b'].reduce(function(newObj, name) {
newObj[name] = obj[name];
delete obj[name];
return newObj;
}, {})); // {a: 1, b: 2}
console.log(obj) // {c: 3}
对于更多的东西,你可以组合_.pick
和_.omit
,但你要创建一个新对象而不是从现有对象中删除属性(无论如何可能更好):
var obj = {a: 1, b: 2, c: 3};
console.log(_.pick(obj, ['a', 'b'])); // {a: 1, b: 2}
obj = _.omit(obj, ['a', 'b']);
console.log(obj) // {c: 3}
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>
99.99999%的时间无关紧要,但就像一个FYI,当你在一个对象上使用delete
时,在一些JavaScript引擎上将对象置于一个未经优化的“字典”模式,其中后续属性查找比在优化对象中慢得多。 (向对象添加属性不会这样做,只是删除它们。)同样,通常没关系,但是...