javascript - 合并数组搜索功能不起作用

标签 javascript arrays

我有两个来自 API 的数据数组,示例数组如下

数组1

[
{userId: 1
description: "Student"
imagePath: "test.png"
status: 1
}]

数组2

[
{id: 85
accountName: "Rahul"
accountNumber: "11145678"
}
]

在我的 react native 应用程序 View 中,有搜索栏,用户应该能够从这两个数组中进行搜索。所以我使用

将这两个数组合并为一个
this.searchArray =this.filterArray[0].concat(this.filterArray[1])

所以,我的 searchArray 是一个包含 Array1 和 Array2 数据的单个数组。示例如下

[
{userId: 1
description: "Student"
imagePath: "test.png"
status: 1
},
{id: 85
accountName: "Rahul"
accountNumber: "11145678"
}]

我的搜索功能如下(我需要从帐号或描述中搜索)

    //Search Filter
searchFilter =searchText=>{

    const searchTextData = searchText.toUpperCase();
    const userSearch =  this.searchArray.filter(item => {  

        const itemData = `${item.description && item.description.toUpperCase()} ${item. accountName && item.accountName.toUpperCase()}`;
        return itemData.indexOf(searchTextData) > -1;    
    });
}

搜索功能不适用于 accountName。它没有得到任何结果。但如果我删除 ${item. accountName && item.accountName.toUpperCase()} ,然后它就可以显示带有描述的数据。但我需要从两者中过滤

最佳答案

在数组中,一个对象可以具有描述或 accountNumber,因此请检查是否存在将其包含在 itemData 变量中。

尝试这样做

searchFilter =searchText=>{
    const searchTextData = searchText.toUpperCase();
    const userSearch =  this.searchArray.filter(item => {  
 const itemData = `${item.hasOwnProperty('description'))?item.description.toUpperCase():''} ${item.hasOwnProperty('accountNumber')?item.accountNumber:''}`;
        return itemData.indexOf(searchTextData) > -1;    
    });
}

关于javascript - 合并数组搜索功能不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60918510/

相关文章:

c - C语言中如何查找数组的索引号

JavaScript:如何在多次按下按钮时使输出替换以前的输出条目

php - 如何使用 php 变量分配 javascript 变量或数组

ruby - 关联数组(或哈希)php 到 ruby

ios - 对成员 'count' 的模糊引用

java - 使用 Java 从文件转换 JSON 对象

javascript - Django 中的 Ajax 调用无需表单

javascript - 如何使用 javascript 替换当前文档 URL 的文本

javascript - 使用 JavaScript 克隆实例化对象?

C: 删除非字母字符的程序