1. Array.of()
在使用 Array.of() 方法创建数组时,只需将想要包含在数组内的值作为参数传入。这个与 new Array()用法类似,不同的是当传入一个值时,Array.of()表示数组长度是1,数组第一个值为传入的值,而new Array() 表示数组的长度为传入的值,数组值为 undefined
let arr1 = new Array(2)
console.log(arr1) // [undefined, undefined]
console.log(arr1.length) // 2
let arr2 = Array.of(2)
console.log(arr2) // [2]
console.log(arr2.length) // 1
2. Array.from()
Array.from()可以接受三个参数,第一个:类数组,第二个一对数组每一项的操作函数,第三个参数,Array.from 的 this指向
let handle = {
diff: 1,
add: function (value){
return value + this.diff
}
}
let result1 = Array.from(arrSet, handle.add, handle)
console.log(result1) // // [2, 3, 4, 6]
也可以传两个参数
let arrSet = new Set([1,2,3,5,5])
let result = Array.from(arrSet, (value) => {
return value + 1
})
console.log(result) // [2, 3, 4, 6]
2. find() 和 findIndex()
二者唯一的区别是: find() 方法会返回匹配的值,而 findIndex() 方法则会返回匹配位置的索引。
例子:JS判断数组中是否包含某个值?
(1)使用indexOf方法
function UseIndexOf (arr, value) {
return arr.indexOf(value) > -1
}
正常情况下就不说了,说说异常情况
【1】不能识别出 NaN
let arr = [1, NaN, 3, 4, undefined, {name: 'zhou', age: 12}]
console.log(UseIndexOf(arr, NaN)) // false
【2】不能识别出对象
console.log(arr.indexOf({name: 'zhou', age: 12})) // false
【3】可以识别出undefined
2. includes()
function UseIncludes(arr, value) {
return arr.includes(value)
}
可以识别出 NaN,undefined,但是识别不出对象
console.log(UseIndexOf(arr, {name: 'zhou', age: 12})) // false
3. find()
返回第一个匹配的值,如果没找到返回undefined
let arr = [1, NaN, 3, 4, undefined, {name: 'zhou', age: 12}]
function test (arr, value) {
// result 返回符合条件的item, 没有返回undefined
var result = arr.find((item, index) => {
return JSON.stringify(item) === JSON.stringify(value)
})
return typeof result === 'undefined' ? false : true
}
console.log(test(arr, 2)) // false
console.log(test(arr, 1)) // true
console.log(test(arr, NaN)) // true
console.log(test(arr, undefined)) // false
console.log(test(arr, {name: 'zhou', age: 12})) // true
不能识别出 undefined:因为本身没有查到就返回undefined
使用 JSON.stringify要使用判断对象~对象属性顺序问题不考虑。。
4. findIndex()
返回第一个匹配的索引,如果没找到返回undefined
let arr = [1, NaN, 3, 4, undefined, {name: 'zhou', age: 12}]
function test (arr, value) {
// result 返回符合条件的item, 没有返回-1
var result = arr.findIndex((item, index) => {
return JSON.stringify(item) === JSON.stringify(value)
})
return result > -1
}
console.log(test(arr, 2)) // false
console.log(test(arr, 1)) // true
console.log(test(arr, NaN)) // true
console.log(test(arr, undefined)) // true
console.log(test(arr, {name: 'zhou', age: 12})) // true
终于成功啦~~~~ 注意 JSON.stringify 要使用!对象属性顺序问题不考虑。
NaN与NaN不相等,{}与{}不相等 用JSON.stringify 转成字符串比较