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