![](/img/trans.png)
[英]Loop through array of arrays which contain objects and get all specific values from the objects then show to the page JQuery
[英]JavaScript Deleting all objects from an array which contain a value
我有一个obj,其中包含对象数组-类似于下面的内容(由于其庞大,因此未将其粘贴到此处)。 我试图遍历对象数组-从数组中删除包含值的那些对象。 我已经编写了以下代码...(使用lodash)
当遍历数组时,它会随机丢失一些'Foo'-因此,并非所有Foo对象都被删除...即使它们包含键Foo。 它确实会忽略不包含Foo的内容。
obj = {
array : [
{
key1 : 'Foo',
Key2 : 'fi'
},
{
key1 : 'Foo',
Key2 : 'fi',
Key3 : 'blah'
},
{
key1 : 'Fred',
Key2 : 'fi'
},
{
key1 : 'Foo',
Key2 : 'fi'
}
... etc....
]
}
var items = obj.array
_.forEach(items, function(n, index) {
var isFoo = _.includes(n, 'Foo');
console.log(isFoo);
if (isFoo) {
items.splice(index, 1);
}
});
我怀疑事情会变得混乱,因为您在遍历数组的同时更改了数组。
_.remove
在这里可能是一个更好的选择:
var obj = { array : [ { key1 : 'Foo', Key2 : 'fi' }, { key1 : 'Foo', Key2 : 'fi', Key3 : 'blah' }, { key1 : 'Fred', Key2 : 'fi' }, { key1 : 'Foo', Key2 : 'fi' } ] }; _.remove(obj.array, function(n, index) { return _.includes(n, 'Foo'); }); console.dir(obj.array)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/3.10.0/lodash.js"></script>
我放弃了lodash,只是做了一个反向for循环(我的想法是,随着内容的删除,索引会发生变化……也许是导致错误的原因?)
var items = obj.array;
var i;
for (i = items.length - 1; i >= 0; i -= 1) {
if (items[i].type === 'Foo') {
items.splice(i, 1);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.