如何使用 for 循环、拼接或数组方法通过文本输入字段在数组中添加和删除项目

问题描述 投票:0回答:1

我采用了一个文本框作为输入字段,将元素(数字)添加到空数组中。并通过按钮点击从该数组中删除元素。我有两个按钮添加按钮和删除按钮。单击“add btn”后,无论我们在文本框中输入什么内容,它都会被添加到数组中。单击删除按钮后,无论输入字段中的数字是什么。该数字应与重复项一起从数组中删除。

我面临的问题是当数组中存在更多相似元素的重复项时。单击按钮时,所有相似的元素都不会从数组中删除。数组中剩余一些元素。

let array = []


function add(n) {
    let input = document.getElementById("number").value
    let output = document.getElementById("arrayElements")

    array.push(input)
    output.innerHTML = "Value added to the array :" + array
}


function remove(n) {
    let input = document.getElementById("number").value
    let output = document.getElementById("arrayElements")

    // for (let i = 0; i <= array.length; i++) {
//     if (array[i] == input) {
    //         delete array[i]
    //     }
    // }

    for (let i = 0; i <= array.length; i++) {
        // debugger
        const index = array.indexOf(input)
        if (index != -1) {
            array.splice(index, 1)
        }
        console.log("array", array);
    }

    // array = array.filter(item => item !== input)
    // console.log(array);

    output.innerHTML = "Value removed from the array :" + newarr
}
javascript html arrays for-loop dom
1个回答
1
投票

出现问题的原因是您在迭代数组时修改数组,导致索引不匹配。

这里有两种方法:

  1. 使用过滤器:更惯用,避免数组修改问题。
  2. 在 while 循环中使用 splice:将删除所有出现的情况 索引问题。

let array = [];

function add() {
    let input = document.getElementById("number").value;
    let output = document.getElementById("arrayElements");
    array.push(input);
    output.innerHTML = `Value added to the array: ${array}`;
}

function remove() {
    let input = document.getElementById("number").value;
    let output = document.getElementById("arrayElements");
    // Approach 1: Using filter
    // array = array.filter(item => item !== input);
    // Approach 2: Using splice in while loop
    let index = array.indexOf(input);
    while (index !== -1) {
        array.splice(index, 1);
        index = array.indexOf(input);
    }
    output.innerHTML = `Value removed from the array: ${array}`;
}
<!DOCTYPE html>
<html>
<head>
    <title>Array Manipulation</title>
    <style>
        #arrayElements {
            margin-top: 20px;
            font-weight: bold;
        }
    </style>
</head>
<body>
    <input type="text" id="number" placeholder="Enter a number">
    <button onclick="add()">Add</button>
    <button onclick="remove()">Remove</button>
    <div id="arrayElements"></div>
</body>
</html>

非问题核心答案的其他更改:

  • 删除添加和删除函数中的参数
    n
    ,因为它没有被使用。
  • 修复输出以显示当前数组。
  • 使用模板文字以获得更好的字符串格式。
© www.soinside.com 2019 - 2024. All rights reserved.