我有一个看起来像这样的对象:
var obj = {
"objectiveDetailId": 285,
"objectiveId": 29,
"number": 1,
"text": "x",
"subTopics": [{
"subTopicId": 1,
"number": 1
}, {
"subTopicId": 2,
"number": 32
}, {
"subTopicId": 3,
"number": 22
}]
}
var stToDelete = 2;
我已经lodash
在我的应用程序中安装了其他东西。有没有一种有效的方法可用于从对象中lodash
删除条目:{"subTopicId":2, "number":32}
obj
还是有一种JavaScript方法可以做到这一点?
正如lyyons在评论中所指出的那样,更惯用和lo琐的方法是使用_.remove
,例如
_.remove(obj.subTopics, {
subTopicId: stToDelete
});
除此之外,还可以传递谓词函数,其结果将用于确定是否必须删除当前元素。
_.remove(obj.subTopics, function(currentObject) {
return currentObject.subTopicId === stToDelete;
});
另外,您可以通过过滤旧数组来创建一个新数组,_.filter
并将其分配给同一对象,如下所示
obj.subTopics = _.filter(obj.subTopics, function(currentObject) {
return currentObject.subTopicId !== stToDelete;
});
要么
obj.subTopics = _.filter(obj.subTopics, {subTopicId: stToKeep});
只需使用香草JS。您可以使用splice
删除元素:
obj.subTopics.splice(1, 1);
你可以做到_pull
。
_.pull(obj["subTopics"] , {"subTopicId":2, "number":32});
检查参考
现在,您可以使用_.reject,它允许您根据需要除去的内容进行过滤,而不是要保留的内容。
不像_.pull
或_.remove
仅适用于阵列,._reject
适用于任何 Collection
obj.subTopics = _.reject(obj.subTopics, (o) => {
return o.number >= 32;
});
据我所知,有四种方法可以做到这一点
const array = [{id:1,name:'Jim'},{id:2,name:'Parker'}];
const toDelete = 1;
首先:
_.reject(array, {id:toDelete})
第二个是:
_.remove(array, {id:toDelete})
这样,数组将被突变。
第三个是:
_.differenceBy(array,[{id:toDelete}],'id')
// If you can get remove item
// _.differenceWith(array,[removeItem])
最后一个是:
_.filter(array,({id})=>id!==toDelete)
我在学习 lodash
回答以作记录,以便以后找到。
除了@thefourtheye答案外,还使用谓词 代替传统的匿名函数:
_.remove(obj.subTopics, (currentObject) => {
return currentObject.subTopicId === stToDelete;
});
要么
obj.subTopics = _.filter(obj.subTopics, (currentObject) => {
return currentObject.subTopicId !== stToDelete;
});
Lodash和打字稿
const clearSubTopics = _.filter(obj.subTopics, topic => (!_.isEqual(topic.subTopicId, 2)));
console.log(clearSubTopics);
这是带有数组的简单lodash函数,并使用索引号将其删除。
index_tobe_delete = 1
fruit = [{a: "apple"}, {b: "banana"}, {c: "choco"}]
_.filter(fruit, (value, key)=> {
return (key !== index_tobe_delete)
})
本文地址:http://javascript.askforanswer.com/ruheshiyonglodashcongliebiaozhongshanchuyuansu.html
文章标签:arrays , javascript , lodash , object
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!
文章标签:arrays , javascript , lodash , object
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!
评论已关闭!