[英]Remove object from array with a nested property in lodash
我有这个数组:
var myArray = [{state: {name: 'object #1'}},
{state: {name: 'object #2'}},
{state: {name: 'object #3'}}];
我试图用lodash删除state.name
是'object#1'的对象 。 目前,我正在这样做:
_.remove(myArray, {
name: 'object #1'
});
但这不起作用。 最初,我是这样尝试的,这对我来说是更明显的方法:
_.remove(myArray, {
state.name: 'object #1'
});
但这也不起作用,我的JS验证器抱怨其中的点表示法。
您如何在lodash中做到这一点?
_.remove
具有谓词功能。 您可以这样操作:
_.remove(myArray, function(arg) {
return arg.name == 'object #1';
});
在纯js中,使用Array#filter
。
var myArray = [{state: {name: 'object #1'}}, {state: {name: 'object #2'}}, {state: {name: 'object #3'}}]; myArray = myArray.filter(v => v.state.name != 'object #1'); console.log(myArray);
或使用Array#forEach
。
var myArray = [{state: {name: 'object #1'}}, {state: {name: 'object #2'}}, {state: {name: 'object #3'}}], newArr = []; myArray.forEach(v => v.state.name !== 'object #1' ? newArr.push(v) : null); console.log(newArr);
您可以将lodash 拒绝与matchProperty速记一起使用。
var result = _.reject(myArray, ['state.name', 'object #1']);
var myArray = [{ state: { name: 'object #1' } }, { state: { name: 'object #2' } }, { state: { name: 'object #3' } } ]; var result = _.reject(myArray, ['state.name', 'object #1']); console.log(result);
body > div { min-height: 100%; top: 0; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.js"></script>
您可以像这样使用_.remove
的回调:
_.remove(myArray, function(o) {
return o.name === 'object #1';
});
或不久使用以下箭头功能 :
_.remove(myArray, o => o.name === 'object #1');
如果可以在计划JS中使用lodash,为什么还要使用lodash?
myArray = myArray.filter(function(element) {
return element.state.name !== 'object #1';
})
如果需要从现有数组中删除元素,则可以使用Array.prototype.splice()
, Array.prototype.findIndex()
var myArray = [{state: {name: 'object #1'}}, {state: {name: 'object #2'}}, {state: {name: 'object #3'}}]; myArray.splice(myArray.findIndex(({state:{name}}) => name === "object #1"), 1); console.log(myArray);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.