2021年9月30日 15:00 by wst
javascript在学习VUE的过程中,各种数组的操作,整的我有点晕乎。这次下定决心,全部整理一遍,以此记录:
<!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>数组操作</title>
</head>
<body>
<script>
// ---------外部循环-------------
var arr = [10, 20, 30, 40]
// 外部for循环迭代
for(let i=0;i<arr.length;i++){
console.log(i, arr[i])
}
// 外部for-in迭代
for(let i in arr){
console.log("new", arr[i])
}
// 外部for of循环
for(let i of arr){
console.log("of", i)
}
// ------------数组自带方法-----------
// 1. concat 联结两个或多个数组
var arr1=[1,2,3]
var arr2 = [4,5]
var arr3 = arr1.concat(arr2)
console.log(arr1, arr3)
// 2. join 用于把数组中所有元素放入一个字符串中
var arr = [2,3,4]
console.log(arr.join())
console.log(arr.join(";"))
// 3. push 向数组末尾添加一个或多个元素,并返回新的长度
var a = [2,3,4]
var b = a.push(5)
console.log("push", a,b)
// 4. pop 删除并返回素组的最后一个元素
var arr = [3,4,5]
console.log("pop", arr.pop())
console.log(arr)
// 5. shift 删除数组的第一个元素,并返回这个元素,改变原数组
var arr = [3,4,5]
console.log("shift", arr.shift())
console.log(arr)
// 6. unshfit 向数组开头添加一个或多个元素,并返回新长度,改变原数组
var arr = [3,4,5]
console.log("unshift", arr.unshift(3, 6))
console.log(arr)
// 7. slice 返回一个新数组,包含[start,end)的arr中的元素,不修改元素数组
var arr = [3,4,5,6,7,8]
console.log("slice", arr.slice(2,4))
console.log(arr)
// 8. splice 删除从index开始的零个或多个元素,并且用参数列表中声明的一个或多个值来替换哪些被删除的元素;
// 返回被删除的元素,改变原数组
var arr = [3,4,5,6,7,8]
console.log("splice", arr.splice(1, 0, 100)) //在第一个位置插入元素100
console.log("splice", arr.splice(2, 3)) //从第二个元素开始,删除3个
// 9. sort 排序, 改变原数组
var fruit = ['apple', 'banana', 'pear', 'cherry']
console.log("before", fruit)
fruit.sort()
console.log("sort:", fruit)
// 10. reverse 反转数组,改变原数组
var arr = [100, 20, 200]
console.log("reverse", arr.reverse())
// 11.indexOf 和 lastIndexOf 查找元素的位置
var arr = [12, 20, 80, 45, 80]
console.log("search", arr.indexOf(20, 0)) // 从起始位置往后找
console.log("search", arr.indexOf(50, 0))
console.log("last search", arr.lastIndexOf(80, 4)) // 从起始位置往前找
// 12. every 对数组的每一项都运行给定的函数, 如果都为true则返回true,否则返回false
var arr = [100, 200, 300]
function devid(element, index, ar){
return element > 200
}
console.log("every", arr.every(devid))
// 13. some 对数组的每一项都运行给定的函数,只要有一项为true,则返回true
function judge(element, index, ar){
return element > 1000
}
console.log("some", arr.some(judge))
// 14. filter 对数的每一项都运行给定的函数,返回结果为true的项组成的数组;
var words = ["spray", "limit", "elite", "exuberant", "destruction", "present", "happy"];
var longWords = words.filter(function(word){
return word.length > 6;
});
console.log("filter", longWords)
// 15. map 对数组的每一项都运行给定的函数,返回值组成一个新的数组
var numbers = [1,5,10,15]
var doubles = numbers.map((element,index)=>element * 2)
console.log("map", doubles)
// 16. forEach遍历数组
const items = ['item1', 'item2', 'item3']
const lengthArr = []
items.forEach((val, index, ar)=>lengthArr.push(val.length))
console.log("foreach", lengthArr)
// 17. reduce,对数组元素进行计算,这里为累加
s = arr.reduce((s,e)=>s+e, 0) // s 为上一次的计算结果,e为当前元素,0为计算结果的初始值
console.log("sum", s)
// es6新增的操作方法
// 18. find 查找数组中符合规则的第一个元素,并返回它
var arr = [1, "2", 3, 4, "2"]
console.log("find", arr.find(n=> (typeof n) === 'number'))
// 19. findIndex 查找数组中符合规则的第一个元素,返回它的下标
var arr = [1, "2", 3, 4, "2"]
console.log("findIndex", arr.findIndex(n=> (typeof n) === 'number'))
// 20. 查找元素(附加示例,如报错,可删除)
let data = [
{name:'张三', key:0},
{name:'李四', key:1},
{name:'王五', key:2},
{name:'老六', key:3}
]
// 目标对象的key
let key = 2
const target = data.find(item => item.key === key);
console.log(target)//{name:'王五', key:2}
// 21. 查找元素的下标
let data = [
{name:'张三', key:0},
{name:'李四', key:1},
{name:'王五', key:2},
{name:'老六', key:3}
]
// 目标对象的key
let key = 2
const target = data.findIndex(item => item.key === key);
console.log(target)//2
</script>
</body>
</html>
运行方法:把此内容粘贴到一个html文件中,并使用浏览器打开即可。
如有问题,欢迎探讨!