Javascript 过滤阵列混淆
我有两个数组。第一个数组包含一组值,而第二个数组为空。我有一个搜索函数,它检查并查看值是否在第一个数组中,如果是,它将保留在数组中。但是,如果该值不在数组中,则需要将其取出并放入第二个数组中,直到它们清除搜索,然后全部返回到原始数组中 假设数组1=[0,1]; 假设array2=[] 我遇到的问题是在搜索之后,如果我过滤掉1,它将正确删除,但如果我过滤掉0,它将不会正确删除 例如:Javascript 过滤阵列混淆,javascript,arrays,logic,push,splice,Javascript,Arrays,Logic,Push,Splice,我有两个数组。第一个数组包含一组值,而第二个数组为空。我有一个搜索函数,它检查并查看值是否在第一个数组中,如果是,它将保留在数组中。但是,如果该值不在数组中,则需要将其取出并放入第二个数组中,直到它们清除搜索,然后全部返回到原始数组中 假设数组1=[0,1]; 假设array2=[] 我遇到的问题是在搜索之后,如果我过滤掉1,它将正确删除,但如果我过滤掉0,它将不会正确删除 例如: `for (i=0; i<(array1.length); i++){
`for (i=0; i<(array1.length); i++){
if (0 !== array1[i]){
array2.push(array1[i]);
array1.splice(i, 1);
}
}`
`for(i=0;iconst search=val=>{
对于(i=0;i如果您只是试图从一个数组中删除某些内容并将其放入另一个数组中,则可以使用两个过滤器来简化代码
让数组1=[1,2,3,4,5,6,7,8,9,10];
设array2=[];
document.querySelector('button')。addEventListener('click',event=>{
const searchvalue=event.target.previousElementSibling.value;
//实际工作:
array2=array1.filter(i=>i==searchvalue);
array1=array1.filter(i=>i!=searchvalue);
控制台日志(array1,array2);
});
搜索
除非你确切知道你在做什么,否则不要更改你正在迭代的集合。并且i
将跳过数组的最后一个元素。在这种情况下这是什么。rows
在这个上下文中?我的坏消息我不正确地编辑了我的代码,并将在问题@GavinEven中修复它,但没有-1它仍然有这个问题lem@AndreasYour仍在修改array1
(它的长度)我相信你的话,这是可行的,但在我的场景中它不起作用,所以它可能是我代码中其他地方的代码问题(没关系,我把它改回了问题中的状态,现在它工作了,尽管我发誓我以前有过。非常感谢!尽管我的大脑想死lol