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