javascript - 查找并删除数组元素

标签 javascript

想要一个代码,要求用户插入一个数字,在数组中查找插入的数字并打印出没有该数字的数组。

这个有什么问题吗?

var arr=[1,2,3,4];

var dWord=prompt("What word do you want to delete ?");

arr.forEach(function(find){
    if(dWord==arr[find]){
        var second=arr.slice(arr[find],arr.lenght-1);
        var first=arr.slice(0,arr[find]);
        second.shift();
        console.log(first.concat(second));  }
else{
    console.log("There is no that numberi array!") ;
}
})

最佳答案

这就是 filter是为了.您可以使用它根据 bool 条件创建一个新数组。在本例中,该条件是数组中的任何给定单词是否与给定的删除单词匹配。

根据您对 slice 函数的使用情况,我不确定您是否要求用户删除索引或删除单词。

如果您要求他们输入他们不想要的单词,那么您可以很轻松地做到这一点:

const arr = ['lorem', 'ipsum', 'dolor', 'si', 'amet'];
const dWord = 'ipsum' // prompt("What word do you want to delete?");

const result = arr.filter(word => word != dWord);
console.log(result);

如果您要求他们提供想要删除的索引,那么您可以使用 filter 所采用的函数的可选第二个参数,如下所示:

const arr = ['lorem', 'ipsum', 'dolor', 'si', 'amet'];
const dIndex = 2 // prompt("What word do you want to delete?");

const result = arr.filter((word, index) => index != dIndex);
console.log(result);

<小时/>

原始代码的问题在于您如何使用 forEach 函数。当你运行时

['a', 'b', 'c'].forEach(function(find) {
  // ...
});

您运行一个循环,其中每次迭代都有 'a''b''c' 作为 find 。在您的情况下,您的循环将运行四次,其中 123 和最后 4 作为寻找。这不是问题,直到您返回并使用这些数字为原始数组建立索引。它稍微起作用的唯一原因是你的数组充满了数字。如果是字母,你就会得到一个错误。然后,为了解决这个问题,slice 函数期望接收两个不定值来进行切割。您实际上传入了数组中的数字。因此,在第一个循环中,您的 find1,这意味着 arr[find]2,因此,当您进行剪切时,您实际上是在一个完全不相关的索引上进行剪切...这有点像滚雪球一样。

关于javascript - 查找并删除数组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59430773/

相关文章:

javascript - Chrome 扩展程序的 chrome.storage

javascript - 创建一种更简单的嵌套函数的方法

javascript - 部分数据更新后保留.click()函数

javascript - 无法观察从多选列表中选择的 knockout 选项

javascript - 如何在 Javascript 中找出给定属性在对象中的哪个位置

JavaScript 仅显示浏览器特定的 CSS 前缀,即使添加了其他前缀也是如此

javascript - AJAX django 获取请求

javascript - xpages:计算字段中的 HTML 表

javascript - 尝试访问函数构造函数内部的变量时出现引用错误

javascript - 如何格式化 "if val 1 or 4 or 6 or 10"