数组相关

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 转成字符串比较

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值