首页 > 解决方案 > 无法摆脱 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))
}) 

标签: javascriptloopsaddeventlistener

解决方案


您应该使用 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));
  });


推荐阅读