1. The indexOf
method has two shortcomings. One is that it is not semantic enough. Its meaning is to find the first occurrence of the parameter value. So to compare whether it is not equal to -1
, the expression is not intuitive enough. Second, it uses the strict equality operator (===
) internally for judgment, which will lead to misjudgment of NaN
.
NaN!=NaN //ES5[NaN].indexOf(NaN)// -1 //ES6[1, 2, NaN].includes(NaN) // true
2. The fill
method can also accept the second and third parameters, which are used to specify the starting and ending positions of filling.
If the filled type is an object, then the object assigned is the same memory address, not the deep copy object.
let arr = new Array(3).fill({name: "Mike"});arr[0].name = "Ben"; arr// [{name: "Ben"}, {name: "Ben"}, {name: "Ben"}]let arr = new Array(3).fill([]); arr[0].push(5);arr// [[5], [5], [5]]
3. The find
method of the array instance is used to find out the A qualified array member. Its parameter is a callback function, and all array members execute the callback function in sequence until the first member whose return value is true
is found, and then returns that member. If there are no matching members, undefined
is returned. The usage of the findIndex method of the
array instance is very similar to the find
method, returning the first one that meets the conditions The position of the array members. If all members do not meet the criteria, -1
is returned. Both methods can accept the second parameter, which is the this
object used to bind the callback function.
4. The ##copyWithin method of the array instance will copy the specified position within the current array. The member is copied to another location (overwriting the original member), and the current array is returned. In other words, using this method will modify the current array.
它接受三个参数。
target(必需):从该位置开始替换数据。如果为负值,表示倒数。
start(可选):从该位置开始读取数据,默认为 0。如果为负值,表示倒数。
end(可选):到该位置前停止读取数据,默认等于数组长度。如果为负值,表示倒数。
[1, 2, 3, 4, 5].copyWithin(0, 2, 4)// [3, 4, 3, 4, 5]
4、Array.of
基本上可以用来替代Array()
或new Array()
,并且不存在由于参数不同而导致的重载。它的行为非常统一。
//ES6Array.of() // []Array.of(undefined) // [undefined]Array.of(1) // [1]Array.of(1, 2) // [1, 2]//ES5Array() // []Array(3) // [, , ,]Array(3, 11, 8) // [3, 11, 8]
Array.of
方法可以用下面的代码模拟实现。
function ArrayOf(){ return [].slice.call(arguments);}
相关推荐:
The above is the detailed content of Summary and sharing of js array knowledge. For more information, please follow other related articles on the PHP Chinese website!