js写一个实现模糊查询方法
时间: 2024-01-20 18:03:58 浏览: 21
以下是一个简单的实现模糊查询的方法:
```javascript
function fuzzySearch(keyword, list) {
const filteredList = list.filter(item => {
return item.includes(keyword);
});
return filteredList;
}
```
这里的 `keyword` 是用户输入的关键词,`list` 是需要进行模糊查询的列表。该方法会返回一个包含匹配的列表项的新数组。
这个方法的实现很简单,它使用 Array.prototype.filter() 方法来遍历列表并返回一个新数组,新数组中只包含匹配关键词的列表项。在这个例子中,我们使用了 String.prototype.includes() 方法来检查列表项是否包含关键词。如果你需要更精确的匹配,你可能需要使用正则表达式或其他方法来实现。
相关问题
js写一个实现模糊查询方法数组里面是对象
假设要实现的模糊查询方法是 `fuzzySearch(query, arr)`,其中 `query` 是查询字符串,`arr` 是包含对象的数组,对象具有属性 `name`,表示需要被查询的名称。
以下是一个可能的实现:
```javascript
function fuzzySearch(query, arr) {
return arr.filter(function(obj) {
// 将查询字符串和名称都转化为小写字母,以便进行不区分大小写的匹配
var name = obj.name.toLowerCase();
query = query.toLowerCase();
// 判断名称是否包含查询字符串
return name.indexOf(query) !== -1;
});
}
```
例如,如果有以下数据:
```javascript
var data = [
{ name: 'apple' },
{ name: 'banana' },
{ name: 'orange' },
{ name: 'pear' }
];
```
调用 `fuzzySearch('a', data)` 将返回:
```javascript
[
{ name: 'apple' },
{ name: 'banana' },
{ name: 'orange' }
]
```
调用 `fuzzySearch('e', data)` 将返回:
```javascript
[
{ name: 'apple' },
{ name: 'pear' }
]
```
写一个不用vue.js 的表单模糊查询
以下是一个使用原生JavaScript实现的表单模糊查询示例:
HTML代码:
```html
<form>
<label for="search-input">搜索:</label>
<input type="text" id="search-input" name="search-input" />
<button type="submit">搜索</button>
</form>
<ul id="results"></ul>
```
JavaScript代码:
```javascript
const form = document.querySelector('form');
const input = document.querySelector('#search-input');
const resultsList = document.querySelector('#results');
form.addEventListener('submit', function(event) {
event.preventDefault();
const query = input.value.toLowerCase();
const items = document.querySelectorAll('.item');
resultsList.innerHTML = '';
items.forEach(function(item) {
const title = item.querySelector('.title').textContent.toLowerCase();
const description = item.querySelector('.description').textContent.toLowerCase();
if (title.indexOf(query) !== -1 || description.indexOf(query) !== -1) {
resultsList.appendChild(item.cloneNode(true));
}
});
});
// 示例数据
const itemsData = [
{
title: 'HTML',
description: 'HTML 是用来描述网页的一种语言。'
},
{
title: 'CSS',
description: 'CSS 是用来为网页添加样式的一种语言。'
},
{
title: 'JavaScript',
description: 'JavaScript 是一种编程语言,可用于创建交互式网页应用程序。'
}
];
// 动态创建示例数据的 HTML
const itemsHtml = itemsData.map(function(itemData) {
return `
<li class="item">
<h2 class="title">${itemData.title}</h2>
<p class="description">${itemData.description}</p>
</li>
`;
}).join('');
// 将示例数据的 HTML 插入到文档中
resultsList.innerHTML = itemsHtml;
```
这个示例中,我们首先注册了一个表单提交事件监听器,然后在表单提交时获取了用户输入的查询字符串,并在所有项目标题和描述中查找匹配的项。如果找到匹配项,就将其克隆并添加到结果列表中。最后,我们使用示例数据动态创建了一些项目,并将它们插入到文档中。