【问题标题】:Skip objects that do not exist (filter) React-Native跳过不存在的对象(过滤器)React-Native
【发布时间】:2019-10-28 00:07:30
【问题描述】:

我有一种情况,我正在循环遍历一组对象。假设只要有 2 个以上的对象,如果第一个对象不存在,如何跳过它并继续下一个?

这是循环:

 for (i = 0; i < this.myInputFields.myTextFields.length; i++) {

        if (!this.myInputFields.myTextFields[i] || this.myInputFields.myTextFields[i] == null || this.myInputFields.myTextFields[i] === '') {
           //go to next
        }

        if (this.myInputFields.myTextFields[i].key) {
             data[this.myInputFields.myTextFields[i].key] = this.myInputFields.myTextFields[i].inputValues;
        }

    }

这是第一个对象不存在时的打印数组:

    [ ,
   { type: 'textfield',
     placeholderText: 'Enter your number',
     title: '*number',
     key: 'signedByNumber',
   inputType: 'numbers',
    inputValues: '553' } ]

如您所见,在该对象之前有一个逗号和逗号之前的一个空格,所以我不知道如何跳过那个空格。

【问题讨论】:

    标签: javascript json loops react-native object


    【解决方案1】:

    这段代码可以让你跳过那些为空的元素。

    for (let i = 0; i < this.myInputFields.myTextFields.length; i += 1) {
      if (this.myInputFields.myTextFields[i]) {
        // print valid element if you want or do whatever you want
        data[this.myInputFields.myTextFields[i].key] = this.myInputFields.myTextFields[i].inputValues;
      }
    }
    

    更有效的方法是

    let array = this.myInputFields.myTextFields.filter(item => item !== undefined); // you can eliminate all undefined elements with filter method
    
    for (let i = 0; i < array.length; i += 1) {
      data[array[i].key] = array[i].inputValues;
    }
    

    【讨论】:

    • 如果我能给你超过 1 票,我会这样做!感谢一百万次,我整天都在尝试修复这个错误。
    • 顺便说一句,我使用的是第二种方法。
    • 还有一个问题,知道如何检查任何键值是否包含 '*' 吗?我无法指定哪个键,因为它们是动态的,但如果其中任何一个包含该符号,我需要一一检查所有键。
    • 您可以使用let newarray = arr.filter(item =&gt; item.key.includes('*'));。之后newarray 只包含 'key' 属性具有 '*' 值的元素。
    • 好吧.. 如果警报没有被触发,那么 newarray 没有元素。再控制一下你的方法,一定是哪里有逻辑问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 2020-10-15
    • 1970-01-01
    • 2018-08-05
    • 1970-01-01
    相关资源
    最近更新 更多