【问题标题】:find a value in a Array in reactjs在 reactjs 的数组中查找一个值
【发布时间】:2018-10-30 23:44:22
【问题描述】:

我已将选项声明为

let options : any[] ;

并使用 json response 填充它,我正在使用

<Select.Creatable
                                    ref="newSource_select"
                                    options={this.state.Options}
                                    id="newSource"
                                    value={this.state.newSource}
                                    onChange= {this.updateNewSource}                                       
                                    labelKey="label"
                                    valueKey="value"
                                    placeholder="Select New Source..."
                            />

 options =['value1' : 'value1' ,
          'value2' : 'value2'
          'value3' : 'value3' ]  // options values entered as mentioned ,

当我输入一个不在选项中的值时,它将提供一个创建标签的选项,标签已创建,但当模式关闭并再次打开时,我无法立即在选项中查看它,在select的选项中显示了输入的选项。我该如何解决这个问题

它正在返回 -1 ,

【问题讨论】:

  • options =['value1' : 'value1' , 'value2' : 'value2' 'value3' : 'value3' ] 这不是一个数组。
  • 你使用index方法而不是indexOf
  • 您确定这就是您使用的确切代码吗?在返回 -1 之前,您应该会收到语法错误
  • 这个问题有很多误解。请修复基本部分并更新您的问题。
  • 正如你在上面提到的options =['value1' : 'value1' , 'value2' : 'value2' 'value3' : 'value3' ] 它不是一个数组,你应该有语法错误。首先,您在“value2”之后错过了昏迷,而您想要实现的目标是 Map 而不是数组。地图有键和值。如果你想让 Array 查看 cmets,你有答案。如果你想有地图去这里:javascripture.com/Map

标签: arrays reactjs react-native


【解决方案1】:

如果你有数组:

var array = ["a", "b", "c"];

您可以按照您所说的使用方法indexOf

array.indexOf("a");

当数组中缺少值时,此方法indexOf 返回 -1。

所以你的数组应该是这样的

options = ["value1", "value2", "value3"]

【讨论】:

    【解决方案2】:

    您使用的数据输入既不是对象也不是数组。下面的代码可能会对您有所帮助。

    对于数组,

     var options =[ 'value1' ,
                      'value2',
                      'value3' ];
        var data = options.filter((val) => val.includes('value1'));
    
        console.log(data); 
    

    如果数据输入是对象数组,那么

    items = [{id: 1, text: 'test words'}, {id: 2, text: 'another test'}];
    var data = items.filter(item => item.text === 'test words')
    console.log(data); 
    

    【讨论】:

      【解决方案3】:

      我不认为你的数组真的是options =['value1' : 'value1' , 'value2' : 'value2' 'value3' : 'value3' ],因为它无法编译。你应该得到一个错误:

      Uncaught SyntaxError: Unexpected token :
      

      我认为你想在这里实现的是一个对象?如果是这样,这里是如何做到这一点:

      options = {value1: 'value1', value2: 'value2', value3: 'value3'}
      

      然后要查找该值是否存在于对象中,只需执行以下操作:

      options.hasOwnProperty(value1)

      【讨论】:

        【解决方案4】:

        你可以像这样使用方法包括:

        var array = ["a", "b", "c"];
        array.includes("value2")
        

        此方法返回真或假

        【讨论】:

        • 我可以确认这在 React 的最新版本中有效。这个答案对我有帮助
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-02-09
        相关资源
        最近更新 更多