javascript - 过滤数组困惑

标签 javascript arrays logic push splice

我有两个数组。第一个数组包含一堆值,而第二个是空的。我有一个搜索功能,可以检查并查看该值是否在第一个数组中,如果它保留在数组中。但是,如果该值不在数组中,则需要将其取出并放入第二个数组,直到他们清除搜索,然后全部返回到原始数组。

假设 array1 = [0, 1]; 让我们说 array2 = [];

我遇到的问题是在搜索之后,如果我过滤掉 1 它将正确删除,但如果我过滤掉 0 则不能正确删除。

例如:

          `for (i=0; i<(array1.length); i++){
             if (0 !== array1[i]){
                array2.push(array1[i]);
                array1.splice(i, 1);
            }
          }`

如果我在搜索 array1 =[1] 和 array2 = [0] 中键入 1,它应该可以工作 但是,如果我在搜索中键入 0 array1 = [0,1] 和 array2=[] 并且它不起作用。

知道为什么这不像我想象的那样工作吗?

最佳答案

如果您只是想从一个数组中删除某些内容并将其放入另一个数组中,您可以使用两个过滤器来简化代码。

let array1 = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ];
let array2 = [ ];

document.querySelector('button').addEventListener('click', event => {
  const searchvalue = event.target.previousElementSibling.value;
  
  // The actual work:
  array2 = array1.filter(i => i == searchvalue);
  array1 = array1.filter(i => i != searchvalue);
  
  console.log(array1, array2);
});
<input type="number" min="1" max="10" step="1" value="5"/>
<button>Search</button>

关于javascript - 过滤数组困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59397402/

相关文章:

javascript - 是什么导致此网页在加载时向下滚动?

ruby-on-rails - [xxx] :Array when trying to use array data on Active Admin table_for (Rails, Postgresql、postgres_ext gem 的错误未定义方法 `to_key')

java - 使用 Java Comparator 对二维数组进行排序

C#:将泛型指针转换为数组

javascript - 如何将 dockerfile 环境变量传递给node.js 文件?

javascript - jQuery 显示前两个回复,隐藏其余部分

python - 在 Python 中推广不同的 for 循环方法

data-structures - 是否可以计算十二生肖,还是必须使用查找表?

logic - z3 中的相互递归数据类型及其与内置类型的交互

javascript - 拥有状态和使用函数获取状态之间的性能差异是什么?