已知arr = [1,2,NaN,1,4,2,NaN],现为输出arr的不重复元素(重复元素只输出一次),则下列程序中的①处,可以作为判断条件的是()
var newArr = []; for(var i = 0 ;i<arr.length;i++){ if(①){ newArr.push(arr[i]); } } console.log(newArr);
已知arr = [1,2,NaN,1,4,2,NaN],现为输出arr的不重复元素(重复元素只输出一次),则下列程序中的①处,可以作为判断条件的是()
var newArr = []; for(var i = 0 ;i<arr.length;i++){ if(①){ newArr.push(arr[i]); } } console.log(newArr);
newArr.indexOf(arr[i]) == -1
!newArr.indexOf(arr[i]) == -1
newArr.includes(arr[i])
!newArr.includes(arr[i])
indexOf()判断是否相等使用的是严格相等运算符 === ,所以
[NaN].indexOf(NaN)值为-1。
includes()判断是否相等使用的是sameValueZero判断算法,所以
[NaN].includes(NaN)值为true。
Object.is(NaN,NaN); //true Object.is(0,-0); //false Object.is(0,+0); //true Object.is(+0,-0); //false
例一: [NaN].includes(NaN); //true [0].includes(-0); //true [0].includes(+0); //true 例二: const a = new Set(); a.add(0); a.add(NaN); a.has(-0); //true a.has(+0); //true a.has(NaN); //true