【发布时间】:2021-03-25 18:19:55
【问题描述】:
我有一个问题,我不知道如何正确解决。
我有一个用来填充我的 DataTable 的数组,当将值添加到数组时,它也会反映在表中。添加和删除效果很好。当用户在搜索字段中输入一些数据时,我想如何搜索数组,并且如果用户输入数据并按“搜索”它可以工作,但是我希望搜索响应输入更改,所以每次用户按下某个字母时它开始过滤器。
let people = [
{ name: 'Jack', lastName: 'London', age: 25, id: 1 },
{ name: 'John', lastName: 'Doe', age: 33, id: 2 },
{ name: 'Jamie', lastName: 'Mith', age: 22, id: 3 },
];
function sortArray(string) {
var arr = [];
for (var i = 0; i < people.length; i++) {
if (people[i].string == string) arr.push(people[i]);
}
return (people = [...arr]);
}
现在事情有点复杂,假设用户在搜索框中输入字母 S,函数过滤器数组,(现在数组中没有任何内容),所以我需要在某处保存原始数组的值作为参考
我确实尝试过过滤它,
function filter(arr, string) {
var regex = new RegExp('.*' + string + '.*');
return arr.filter(function (el) {
return regex.exec(el.name);
});
}
但也没有运气。
我正在使用 Svelte、IBM Carbon 数据表(尽管我认为这不会改变任何东西)。
我什至可能会以某种方式使其工作,但我认为它会非常无能,所以如果有人有解决方案,我将非常感激。
当我们使用扩展运算符复制数组时,数据量适中时的成本(性能方面)是多少?
【问题讨论】:
标签: javascript arrays search svelte-3