使用內置的lodash函數,是否可以傳遞一個對象和一個鍵列表,並將鍵/值對從對象中移除並放入一個返回的新對象中。示例: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函數替換。
使用內置的lodash函數,是否可以傳遞一個對象和一個鍵列表,並將鍵/值對從對象中移除並放入一個返回的新對象中。示例: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函數替換。
我不認爲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}
對於一些更lodash-Y,你可以結合_.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>
delete
,對一些JavaScript引擎,把對象變成一個未優化的「字典」模式,後續財產
99.99999%查找速度比優化對象慢得多。 (添加屬性的對象並沒有這樣做,只是刪除它們。)此外,通常也沒關係,但是......
您確實需要從源對象中刪除*屬性嗎?這是一個有點奇怪的要求。 –