Javascript 如果满足条件,则完成

Javascript 如果满足条件,则完成,javascript,arrays,if-statement,slice,Javascript,Arrays,If Statement,Slice,为了检查我的JS级别,我最近接到了这样一个任务: var array1 = [20, 50, 12, 1, 2], array2 = []; for(var i = 0, length = array1.length; i < length; i++) { if(array1[i] === 12){ // Complete if statement to make array2 equal to [20, 50, 1, 2] }; array

为了检查我的JS级别,我最近接到了这样一个任务:

var array1 = [20, 50, 12, 1, 2],
    array2 = [];
for(var i = 0, length = array1.length; i < length; i++) {
    if(array1[i] === 12){
     // Complete if statement to make array2 equal to [20, 50, 1, 2]
      };
     array2.push(array1[i]);
}
var array1=[20,50,12,1,2],
array2=[];
对于(变量i=0,长度=array1.length;i
我的回答是:“这是不可能的”。因为变体一:

var array1 = [20, 50, 12, 1, 2],
    array2 = [];
for(var i = 0, length = array1.length; i < length; i++) {
    if(array1[i] === 12){
     array1 = [...array1.slice(0,i),  ...array1.slice(i+1)];
      };
     array2.push(array1[i]);
}
console.log(array2); // [20, 50, 1, 2, undefined]
var array1=[20,50,12,1,2],
array2=[];
对于(变量i=0,长度=array1.length;i
附件未定义。 出于好奇,我尝试了变体二:

var array1 = [20, 50, 12, 1, 2],
    array2 = [];
for(var i = 0, length = array1.length; i < length; i++) {
    if(array1[i] === 12){
     array1 = [...array1.slice(0,i),  ...array1.slice(i+1)];
     };
     array2.push(array1);
}
console.log(array2); //[[20, 50, 12, 1, 2], [circular object Array], [20, 50, 1, 2], [circular object Array], [circular object Array]]
var array1=[20,50,12,1,2],
array2=[];
对于(变量i=0,长度=array1.length;i
情况变得更糟。 对我来说,理想的解决方案是三个:

var array1 = [20, 50, 12, 1, 2],
    array2 = [];
for(var i = 0, length = array1.length; i < length; i++) {
    if(array1[i] === 12){
     array2 = [...array1.slice(0,i),  ...array1.slice(i+1)];
     };
    }
console.log(array2); // [20, 50, 1, 2]
var array1=[20,50,12,1,2],
array2=[];
对于(变量i=0,长度=array1.length;i
但这是不允许的。 因此,我的问题是: 1) 它能像要求的那样完全解决吗? 2) 为什么变量1中会出现undefined?
3) 为什么变量2如此冗长?

或者干脆用
continue替换
//完成if语句,使array2等于[20,50,1,2]
或者更简单,用
i++
替换它。