【问题标题】:Remove parent object if nested object has a specific property as false on all nested objects如果嵌套对象在所有嵌套对象上的特定属性为 false,则删除父对象
【发布时间】:2018-09-13 18:07:19
【问题描述】:

基本上我有一个对象数组如下,

蓝色圆圈显示我需要检查的对象的属性。

如果选项属性中的所有项目的模型都是“false”,我想从数组中删除整个对象。

如果有真假混合,我只想保留真假。

知道怎么做吗?

所以基本上是因为

TheArray[1].options['key1'].model = true;

我想保留这一切。

但是因为

TheArray[2].options['key1'].model = false;
TheArray[2].options['key2'].model = false;

我想删除整个TheArray[2]

如果TheArray[2] 如下所示;

TheArray[2].options['key1'].model = true;
TheArray[2].options['key2'].model = false;

我只想保留TheArray[2].options['key1'];

我也使用 angular 4 来做到这一点。

任何帮助将不胜感激。

提前谢谢大家。

【问题讨论】:

    标签: arrays angular object


    【解决方案1】:

    浏览整个对象并保留一个没问题的对象怎么样?

    for (var i = 0; i < TheArray.length; i++) {
      let checked = false;
      for (var j = 0; j < TheArray[i].options.length; j++) {
        let _this = TheArray[i].options[j]
        if ( _this.model ) {
          checked = true
          break
        }
      }
      if (!checked){
        // remove it
      }
    }
    

    这不是一个完整的答案。我的意思是,这个算法不会删除错误的,而只是删除 break 部分,添加 else 语句并将其删除。

    【讨论】:

    • 感谢您的回答,但这并不是我真正需要的。我不想使用 for 循环,forEach 更适合这种情况,因为一旦数据完成,我必须将数据传递给另一个函数,而 for 循环不会这样做,它们只是开始并转到下一行天气它是否完成,但我需要它等待循环完成,然后再将其传递给另一个函数
    • 完全错误......您可以破坏整个事情或在 for 循环中返回函数,这是您无法使用 .forEach() 完成的操作
    • 你根本不懂我
    • I'll have to pass the data once it's finished to another function and for loops don't do that 这是假的
    猜你喜欢
    • 2019-07-22
    • 2019-02-09
    • 2018-08-17
    • 2020-03-20
    • 2019-11-02
    • 2021-06-09
    • 2019-03-28
    • 2021-01-30
    • 2021-10-29
    相关资源
    最近更新 更多