如何获取本机数组中选定元素的索引

时间:2018-10-04 07:41:39

标签: arrays react-native

我希望在react native数组中选择元素的索引。我尝试使用indexOf(),但它始终返回-1。 School是我的数组,而email包含要查找其索引的元素的值。

deleteDetails = (email) => {
  var index = School.indexOf(email);
}

3 个答案:

答案 0 :(得分:2)

根据您的评论,School是一个对象数组,因此您需要使用findIndex而不是indexOf

var arr = [{
  email: "test1@test.com",
  remarks: "tt",
  slno: 1
}, {
  email: "test2@test.com",
  remarks: "ttt",
  slno: 2
}, {
  email: "test3@test.com",
  remarks: "tttt",
  slno: 3
}, {
  email: "test4@test.com",
  remarks: "4",
  slno: 4
}];

function getIndex(email) {
  return arr.findIndex(obj => obj.email === email);
}

console.log(getIndex("test4@test.com"));

希望这会有所帮助!

答案 1 :(得分:0)

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf

根据文档,仅当在数组中未找到值时indexOf才返回-1。 在调用indexOf之前,请检查您的School数组和电子邮件值。您可以使用调试器,也可以只在调用indexOf之前添加console.log。

deleteDetails = (email) => {
  console.log(email);
  console.log(School);
  var index = School.indexOf(email);
}

如果您的电子邮件元素是字符串“ abc@email.com”,则您的数组应包含字符串元素。

var email = "abc@email.com";
var emails = ["abc@email.com", "def@email.com"];
console.log(emails.indexOf(email));
// expected output: 0

编辑:考虑以下注释,您的回调方法应返回元素的索引。所以deleteDetails函数应该是这样的。

deleteDetails(email, index) {
      // code
    }

让我们考虑将Flatlist列出。

<FlatList
        data={this.props.data}
        extraData={this.state}
        keyExtractor={this._keyExtractor}
        renderItem={this._renderItem}
      />

_renderItem = ({item, index}) => (
<MyListItem
  id={item.id}
  onPressItem={this._onPressItem}
  selected={!!this.state.selected.get(item.id)}
  title={item.title}
  onDeleteButtonPressed={(item, index) => this.deleteDetails(item,index)}
/>
);

您必须创建一个onDeleteButtonPressed道具,并在组件中按下按钮以触发deleteDetails函数时调用它。

答案 2 :(得分:0)

如果您使用的是Flatlist,那么;

renderDataItem = ({item, index}) => {
return (
  <TouchableWithoutFeedback
    onPress = {() => Actions.testing2({ sayi : index })}>
    <View style = {styles.allCointer}>
      <View style = {styles.textContainer}>
        <Text style={styles.textContainerTitle}> {item.Title} </Text>
        <Text style={styles.textContainerText}> {item.Description} </Text>
      </View>
      <Image
        style = {styles.image}
        source = {{uri : item.Files[0].FileUrl}}
      />
    </View>
  </TouchableWithoutFeedback>
)}
该行中的

index 参数

renderDataItem = ({item, index}) => {

是您当前的索引值。