日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

[JavaScript] JavaScript数组挖掘,不只是讲数组哟(2)

發布時間:2023/11/27 生活经验 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [JavaScript] JavaScript数组挖掘,不只是讲数组哟(2) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

課程來源:后盾人
上一篇的內容:[JavaScript] JavaScript數組挖掘,不只是講數組喲
數組引用類型分析,多維數組,用Array.of為數組創建細節,類型檢測與轉換,在一個數組后面加一個新的數組,解構賦值,多種添加元素的方式,在數組中增刪改,小函數:移動數組里的一部分,清空數組的方式,split和join的使用,find和findIndex的使用,自定義find函數,神奇的排序。

數組的循環操作

  • 首先我們定義一個數組,命名為lessons
let lessons = [{ name: 'js基礎', catagory: 'js' },{ name: 'flex彈性盒子模型', catagory: 'css' },{ name: 'html基礎', catagory: 'html' },{ name: '數據庫查詢', catagory: 'mysql' },{ name: 'C語言YYDS', catagory: 'c' },
]
  1. 普通的for循環
for (let i = 0; i < lessons.length; i++) {lessons[i].name = `Dust喜歡的${lessons[i].name}`
}
console.log(lessons)

運行結果:

2. for-in循環

for (let key in lessons) {lessons[key].name = `Dust喜歡的${lessons[key].name}`
}


3. for-of循環

  • 注意這里傳值和傳址的區別,傳值的時候改變不了原數組的。
let arr = [1, 2, 3, 4, 5]
for (let value of arr) {//開辟一個新的內存空間賦值給它value += 10//此時arr表示:關我什么事?這種方法是改變不了原數組的。
}
console.log(arr) //[ 1, 2, 3, 4, 5 ]let a = [{ n: 1 }, { n: 2 }]
for (let value of a) {value.n += 10//這次是引用類型,所以可以改變到里面的內容。//這次在let的時候不是開辟一個新的空間,而是直接拿來它的地址用。
}
console.log(a) //[ { n: 11 }, { n: 12 } ]

運行結果:

  1. forEach循環

forEach還可以直接操作dom元素

lessons.forEach(function (item, index, lessons) {item.title = item.name.substr(0, 2)
})
console.log(lessons)

運行結果:

迭代器

  • 首先來看看next里都有些啥?
let arr = ['dust1', 'dust2', 'hahaha']
let values = arr.values()
console.log(values.next())
  • 運行結果:

  • 看懂了嗎?明白了next()里都有些啥了不?

  • 來看看迭代器是怎么寫的了把~

let arr = ['dust1', 'dust2', 'hahaha']
let values = arr.values()
while (({ value, done } = values.next()) && done === false) {console.log(value)
}
  • 運行結果:

every和some的使用

  • every:一旦有就不行
let user = [{ name: '李四', js: 89 },{ name: '張三', js: 99 },{ name: '馬六', js: 55 },
]
let res = user.every(function (item) {return item.js >= 60
})
console.log(res ? '全都及格' : '有人不及格') //有人不及格
  • some:有一個就行
let arr = ['dust1', 'dust2', 'hahaha']
let res1 = arr.some(function (value, index, arr) {console.log(value)//有一個為真就行return true
})
console.log(res1) //dust1 true
  • some配合DOM的實戰
  • test.html
  • 達到效果:如果不輸入指定的關鍵字就有提示消息
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta http-equiv="X-UA-Compatible" content="IE=edge" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>Document</title></head><body><input type="text" name="title" /><span></span><script defer>let keywords = ['js', 'php']let title = document.querySelector('[name="title"]')title.addEventListener('keyup', function () {const res = keywords.some((keyword) => {return this.value.indexOf(keyword) != -1})if (res == false) {document.querySelector('span').innerHTML = '必須包含' + keywords.join(',') + '關鍵詞'} else {document.querySelector('span').innerHTML = ''}})</script></body>
</html>

運行結果:


filter過濾器的使用

let lessons = [{ name: 'js基礎', catagory: 'js' },{ name: 'flex彈性盒子模型', catagory: 'css' },{ name: 'html基礎', catagory: 'html' },{ name: '數據庫查詢', catagory: 'mysql' },{ name: 'C語言YYDS', catagory: 'c' },{ name: '響應式媒體查詢', catagory: 'css' },
]
const cssLessons = lessons.filter(function (lesson) {return lesson['catagory'] == 'css'
})
console.log(cssLessons)


map的使用

  • map是一個值類型,相當于一個復印機,不會改變原來的值。
let lessons = [{ name: 'js基礎', catagory: 'js' },{ name: 'flex彈性盒子模型', catagory: 'css' },{ name: 'html基礎', catagory: 'html' },{ name: '數據庫查詢', catagory: 'mysql' },{ name: 'C語言YYDS', catagory: 'c' },{ name: '響應式媒體查詢', catagory: 'css' },
]const myLessons = lessons.map((item) => {return (item.name = `Dust喜歡的${item.name}`)
})
console.log(myLessons)

運行結果:


神奇的reduce

  • reduce是一個神奇的迭代方法,每次都會把上一次的返回值傳給下一次,理解一下什么叫遞歸很重要。
  • 首先通過一個輸出來感受一下這個語法:
let arr = [1, 2, 3, 4, 5]
arr.reduce((pre, value, index, array) => {console.log(pre, value)return 99
})

接下來介紹兩個有點繞的reduce示例

統計一個數組中某個數出現的次數。
  • 比如這里統計1在a數組中出現的次數。
  • 老師的簡寫寫法簡直讓人嘆為觀止啊!
let arr = [1, 2, 3, 4, 5, 1, 2, 3, 1]
function arrayCount(array, item) {return array.reduce((total, cur) => {total += item == cur ? 1 : 0return total}, 0)
}
console.log(arrayCount(arr, 1))

輸出數組中的最大值
function arrayMax(array) {return array.reduce((pre, cur) => {return pre > cur ? pre : cur})
}
console.log(arrayMax(arr)) //5

總結

以上是生活随笔為你收集整理的[JavaScript] JavaScript数组挖掘,不只是讲数组哟(2)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。