數組的遍歷 原

遇到一個項目需要自己根據不同平臺顯示不同的頁面和鏈接,所以自己寫了一個數組,需要遍歷數組

list: [ { id: 'czbguanwei', logo: require('../assets/chargeDis/chezhubang.png'), title: '百度推廣官微', activeState: '車主邦北京已上線的珠海驛聯電站', dec: '初秋送爽,車主邦爲新能源汽車用戶送上初秋福利!' } ]

一開始我想到了forEach遍歷


this.platformList.forEach(item => {
      console.log(item.id)
      if (item.id === this.$route.params.id) {
        this.info = item
        console.log(item.title)
        window.zhuge.track(item.title)
      }
    })

但是這種遍歷方式,break無效

爲了性能;我選擇了 for in


for (let idx in platformList) {
      if (platformList[idx].id === this.$route.params.id) {
        this.info = platformList[idx]
        window.zhuge.track(this.info.title)
        break
      }
    }

map也可以實現: map和foreach 都是不能return break結束循環,但是map可以return一個新的數組而且不改變原來的數組

platformList.map((item) => {
      if (item.id === this.$route.params.id) {
        this.info = item
      }
    })

filter


platformList.filter((item) => {
      if (item.id === this.$route.params.id) {
        this.info = item
        console.log(item)
        return item
      }
    })

every


platformList.every((item) => {
      if (item.id === this.$route.params.id) {
        this.info = item
        console.log(item)
        return item
      }
    })

every和filter的區別: filter()會返回所有符合過濾條件的元素;every()會判斷是不是數組中的所有元素都符合條件,並且返回的是布爾值 every()與some()的區別是:前者要求所有元素都符合條件才返回true,後者要求只要有符合條件的就返回true

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章