标识为字符串是javascript中另一个较长字符串的子字符串
我正在尝试在我的页面上实现搜索功能。默认情况下,页面将加载项目列表。我在表上方实现了一个搜索框,单击“搜索”按钮后,表将仅重新加载与搜索字符串一起应用的值 我有listofstring([]),它是表中所有条目的列表,而searchString是用户将在搜索框中输入的内容。因此,逻辑应该是ListOfstring中所有以searchString作为子字符串的条目都应该显示出来。我正在实现如下逻辑:标识为字符串是javascript中另一个较长字符串的子字符串,javascript,Javascript,我正在尝试在我的页面上实现搜索功能。默认情况下,页面将加载项目列表。我在表上方实现了一个搜索框,单击“搜索”按钮后,表将仅重新加载与搜索字符串一起应用的值 我有listofstring([]),它是表中所有条目的列表,而searchString是用户将在搜索框中输入的内容。因此,逻辑应该是ListOfstring中所有以searchString作为子字符串的条目都应该显示出来。我正在实现如下逻辑: <form> <input type="text" ng-model="
<form>
<input type="text" ng-model="searchString">
<input type="button" value="Search Text" ng-click="reloadTable()">
</form>
var reloadTable = function()
{
for (var i = 0; i < ListOfStrings.Length; i++)
{
if ((searchString) && (ListOfStrings[i].indexOf(searchString) != -1))
{
ListToDisplay.push(ListOfStrings[i]);
}
}
}
var reloadTable=函数()
{
对于(var i=0;i
但是我有以下问题,
您已经说过您的列表都是大写的,所以在循环之前,只需将
searchString
转换为大写:
searchString = searchString.toUpperCase();
输入字段的值永远不会为null
,但可以是空字符串(“”
)。因此,对于空字符串,只需复制整个列表,而不是循环:
searchString = searchString.toUpperCase();
if (searchString === "") {
ListToDisplay = ListOfStrings;
// or ListToDisplay = ListOfStrings.slice(); if you want to take a copy
} else {
ListToDisplay = [];
for (var i = 0; i < ListOfStrings.length; i++) {
if (ListOfStrings[i].indexOf(searchString) != -1) {
ListToDisplay.push(ListOfStrings[i]);
}
}
}
searchString = searchString.toUpperCase();
ListToDisplay = !searchString ? ListOfStrings : ListOfStrings.filter(function(el) {
return el.indexOf(searchString) != -1;
});