I have a JSON response like this:
{
id_order: '123123asdasd',
products: [
{
description: 'Product 1 description',
comments: [
{
id_comment: 1,
text: 'comment1'
},
{
id_comment: 2,
text: 'comment2'
}
]
}
]
}
How can I remove, with lodash , one object which has an id_comment that is equal to 1, for example?
Tried using _.remove
without success.
You can use _.remove inside an forEach using an object as the predicate:
_.forEach(obj.products, function(product) {
_.remove(product.comments, {id_comment: 1});
});
If an object is provided for predicate the created _.matches style callback returns true for elements that have the properties of the given object, else false.
var obj = { id_order: '123123asdasd', products: [{ description: 'Product 1 description', comments: [{ id_comment: 1, text: 'comment1' }, { id_comment: 2, text: 'comment2' }] }, { description: 'Product 2 description', comments: [{ id_comment: 2, text: 'comment2' }, { id_comment: 3, text: 'comment3' }] }, { description: 'Product 3 description', comments: [{ id_comment: 1, text: 'comment1' }, { id_comment: 2, text: 'comment2' }] }] }; _.forEach(obj.products, function(product) { _.remove(product.comments, {id_comment: 1}); }); document.getElementById('result').innerHTML = JSON.stringify(obj, null, 2);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/3.10.1/lodash.min.js"></script> <pre id="result"></pre>
removeObject: function(collection,property, value){
return _.reject(collection, function(item){
return item[property] === value;
})
},
Here's an example using remove()
:
_.each(order.products, function (product) {
_.remove(product.comments, function (comment) {
return comment.id_comment === 1;
});
});
Assuming your order variable is named order
, and the products
and comments
properties are always present.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.