首页 > 解决方案 > 这是在 JavaScript 数组中搜索名称的正确方法吗?

问题描述

我正在尝试通过 React JS 实现一个动态列表视图,而不使用任何现成的组件。我需要一个简单的搜索来通过他们的名字找到用户,我应该管理这个问题......

例如,我认为并编写了以下代码:

var students = [
    {
        name: 'David',
        age: 12
    },
    {
        name: 'Daniel',
        age: 13
    },
    {
        name: 'Alex',
        age: 10
    }
];

var key = 'Da';

function search(item) {
    return item.name.substring(0, key.length) == key;
}

var result = students.filter(search);

在这种情况下,我应该搜索数组并且我没有任何 API 来处理查询和管理搜索。

性能和最佳实践对我来说非常重要......

那么,是否使用优化的过滤器和子字符串来实现自定义简单搜索?如果我有一个超过 1000 个索引的大数组!

谢谢

标签: javascriptarraysreactjssearch

解决方案


您可以像这样使用Array.filterArray.includes

var students = [ { name: 'David', age: 12 }, { name: 'Daniel', age: 13 }, { name: 'Alex', age: 10 } ];

let searchByFirstName = str => students.filter(({name}) => name.includes(str))

console.log(searchByFirstName('Da'))
console.log(searchByFirstName('ex'))
console.log(searchByFirstName('iel'))

这将检查名称是否在任何“位置”包含指定的字符串。如果您只关心字符串的开头,您可以使用String.startsWith

var students = [ { name: 'David', age: 12 }, { name: 'Daniel', age: 13 }, { name: 'Alex', age: 10 } ];

let searchByFirstName = str => students.filter(({name}) => name.startsWith(str))

console.log(searchByFirstName('Da'))
console.log(searchByFirstName('A'))


推荐阅读