javascript - 无法摆脱 some() 数组方法
问题描述
我在按钮上附加了一个单击事件,以执行检查某个元素是否与某个条件匹配的搜索。在下面的代码片段中,有一个 some() 数组方法检查 'entriesFound' 数组中是否存在与特定条件匹配的元素。然而,一切正常,直到 else if(el.name !== name.value) 条件。警报框显示,但我需要单击警报框中的“确定”按钮,次数与 entriesFound 数组中的元素一样多。
import { persons } from './main.js';
export let entriesFound = []
export const searchBtn = document.querySelector('.search').addEventListener('click' , function() {
let name = document.querySelector('.searchInput')
if(name.value === "") {
alert('No search query!')
return;
}
entriesFound.some( el => {
if(el.name === name.value){
name.value = ""
alert("You\'ve already found what you are looking for!")
el.remove();
// from here things go wrong
}else if(el.name !== name.value){
alert("No data found!")
return;
}
})
persons.some( el => {
if(el.name === name.value) {
addItem(el)
entriesFound.push(el);
}
})
name.value = ""
localStorage.setItem('entriesFound', JSON.stringify(entriesFound))
})
解决方案
您应该使用 some 的返回值,并且可以使用 find:
import { persons } from "./main.js";
export let entriesFound = [];
export const searchBtn = document
.querySelector(".search")
.addEventListener("click", function () {
let name = document.querySelector(".searchInput");
if (name.value === "") {
alert("No search query!");
return;
}
const entryExists = entriesFound.some((el) => el.name === name.value);
if (entryExists) {
name.value = "";
alert("You've already found what you are looking for!");
el.remove();
// from here things go wrong
} else {
alert("No data found!");
return;
}
const item = persons.find(el.name === name.value);
if (item !== null) {
addItem(item);
entriesFound.push(item);
}
name.value = "";
localStorage.setItem("entriesFound", JSON.stringify(entriesFound));
});
推荐阅读
- c++ - 将 unicode 代码点转换为 utf-16
- c - 在 C 中声明指针的方法
- c# - 从转换后的字符串返回两个变量
- python-3.x - 箱须图,每点三个箱
- reactjs - 在 React 中延迟加载图像
- c++ - QAbstractItemModel::columnCount - 每行的可变列数
- api - 谷歌地图、方向、距离矩阵API
- selenium - 如何使用 Python Selenium 切换到嵌套框架集?
- javascript - 如何在 Material-UI 中创建一个与 OutlinedInput 齐平的 InputAdornment IconButton?
- python - 从文件夹中获取图像,合并两个图像,然后将变体图像输出到具有唯一文件名的新文件夹中