Fah*_*had 2 arrays react-native
我希望在react native数组中选择元素的索引。我尝试使用indexOf(),但它始终返回-1。School是我的数组,email包含要查找其索引的元素的值。
deleteDetails = (email) => {
var index = School.indexOf(email);
}
Run Code Online (Sandbox Code Playgroud)
根据您的评论,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"));Run Code Online (Sandbox Code Playgroud)
希望这会有所帮助!
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);
}
Run Code Online (Sandbox Code Playgroud)
如果您的电子邮件元素是字符串“abc@email.com”,则您的数组应包含字符串元素。
var email = "abc@email.com";
var emails = ["abc@email.com", "def@email.com"];
console.log(emails.indexOf(email));
// expected output: 0
Run Code Online (Sandbox Code Playgroud)
编辑:考虑下面的注释,您的回调方法应该返回元素的索引。所以deleteDetails函数应该是这样的。
deleteDetails(email, index) {
// code
}
Run Code Online (Sandbox Code Playgroud)
让我们考虑使用 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)}
/>
);
Run Code Online (Sandbox Code Playgroud)
并且您必须创建一个 onDeleteButtonPressed 属性,并在组件中按下按钮时调用它以触发 deleteDetails 函数。
| 归档时间: |
|
| 查看次数: |
9410 次 |
| 最近记录: |