JavaScript的数组概念

认识数组

  • 字面意思上是一组数据,一组(一般情况下相同类型)的数据(不一定都是数字)

1. 字面量 创建数组

var ageArr = [12, 15, 6, 4, 152, 486]
var nameArr = ['zhangsan', 'lisi', 'wangwu']
var studentArr = [{
    name: "李斯",
    age: 18
}, {
    name: '掐点',
    age: 20
}]
console.log(studentArr);

2. Array 创建数组

var arr1 = new Array(12, 13, 14, 15, 16)
console.log(arr1);

3. 数组的长度

var arr1 = new Array(12, 13, 14, 15, 16)
console.log(arr1.length);
// 强制删除数组的内容
arr1.length = 3
console.log(arr1);

4. 清空数组

arr1.length = 0
console.log(arr1);

5. 索引 – 通过索引值来修改/添加数组

var arr2 = ['chenye', 'xiaoming', 'tiechui']
console.log(arr2[0], arr2[1], arr2[2]);
arr2[0] = 'kenvin'
console.log(arr2[0]);
arr2[3] = 'lisi'
console.log(arr2[3]);
arr2[5] = 'aaa'
console.log(arr2);

6. 遍历数组

var arr3 = [3, 4, 5, 6, 7, 8, 9]
for (var i = 0; i < arr3.length; i++) {
    console.log(arr3[i]);
}

7. 复制数组

var arr4 = []
for (var i = 0; i < arr3.length; i++) {
    arr4[i] = arr3[i]
}
console.log(arr4);
arr4[0] = 'aaa'
console.log(arr3, arr4);

8. 数组的常用方法

8-1. push – 后面追加元素, 返回值是长度

var arr5 = [4, 5, 6, 7, 8, 9]
var res = arr5.push(20)
console.log(arr5);
console.log('返回值是', res);

8-2. pop – 后面删除元素, 返回值是删除的元素

var arr6 = [7, 8, 9, 1, 10]
var res = arr6.pop()
console.log(arr6);
console.log('返回值是', res);

8-3. unshift – 前面追加元素, 返回值是长度

var arr7 = ['lisi', 51, 153, 86]
var res = arr7.unshift('aadb')
console.log(arr7);
console.log('返回值', res);

8-4. shift – 前面删除元素, 返回值是删除的这个元素

var arr8 = ['dsgsD', 1351, 3135, 13513, 1368, 464]
var res = arr8.shift()
console.log(arr8);
console.log(res);

8-5. splice – 删除 (从第几位开始,删掉多少位元素) 影响原数组

var arr8splice = arr8.splice(1, 2)
console.log(arr8);
console.log('返回值是', arr8splice);

8-6. splice – 添加 (从第几位开始,指定插入新增元素的位置,添加的数组)

var arr9 = ['第一个', '第二个']
console.log(arr9);
// 1 表示从第一个位置开始添加; 0 表示不删除当前元素
var res = arr9.splice(1, 0, '第三个', '第四个')
console.log('返回值是', res);
console.log(arr9);

8-7. reverse 倒序

var arr10 = [1, 3, 2, 4, 5]
arr10.reverse()
console.log(arr10);

8-8. sort 排序(接收一个回调函数)

var arr11 = [11, 2, 51, 61, 315, 48, 21, 15]
arr11.sort(function (a, b) {
    return a - b
})
console.log(arr11);

9. 以下 5 种方法不影响原数组

9-1. concat 拼接

var arr12 = [1, 2, 3, 4]
var arr13 = [5, 6, 7, 8]
var arr14 = arr12.concat(arr13, 959, [59, 61])
console.log(arr14);

9-2. join 数组 => 字符串

var arr15 = [135, 35, 1351, 145165, 165316, 51, 5]
document.write(arr15.join('-'))
9-2-1. 在页面渲染 li 标签
var arr16 = []
for (var i = 0; i < 5; i++) {
    arr16.push('<li>' + i + '</li>')
}
document.write(arr16.join(''))

9-3. slice 截取[开始索引,结束索引)–包前不包后 不影响原数组

var arr17 = ["aaa", "bbb", "ccc", "ddd", "eee"]
var arr18 = arr17.slice(0, 3)
console.log(arr17, arr18);

9-4. indexOf 返回查找内容的索引值

var arr19 = ['34', 'df', 'qwrq', 'aa']
var res1 = arr19.indexOf('aa')
console.log(res1);

9-5. laseIndexOf -1找不到

var res2 = arr19.lastIndexOf('df')
console.log(res2);

10. 数组的遍历方法

10-1. forEach 遍历

var arr20 = ['aaa', 'bbb', 'ccc', 'ddd']
// 回调函数
arr20.forEach(function (item, index, arr20) {
    console.log(item, index, arr20)
})

10-2. map 映射

var arr21 = [1, 2, 3, 4, 5, 'efae']
arr21.map((item) => {
    return item
})
console.log(arr21);
10-2-1. map 映射的应用 – 渲染 li 标签
var arr22 = ['张三', '李四', '王五']
var arr23 = arr22.map((item) => {
    return '<li>' + item + '</li>'
})
document.write(arr23.join(''))

10-3. filter 过滤

var arr24 = [
    {
        name: 'aaa',
        price: 100
    },
    {
        name: 'bbb',
        price: 200
    },
    {
        name: 'ccc',
        price: 300
    },
]

var arr25 = arr24.filter(function (item) {
    return item.price > 200
})
console.log(arr25);

10-4. every 每一个必须满足条件返回 true

    var arr26 = [80, 90, 80, 60, 40, 85, 95, 15]
    var arr27 = arr26.every((item) => {
        return item >= 10
    })
    console.log(arr27);

10-5. some 只要一个满足条件返回 true

var arr28 = [90, 98, 91, 2]
var arr29 = arr28.some((item) => {
    return item > 90
})
console.log(arr29);

10-6. find

var arr30 = [
    {
        name: '语文',
        grade: 90
    },
    {
        name: '数学',
        grade: 95
    },
    {
        name: '体育',
        grade: 100
    },
]
var arr32 = arr30.find((item) => {
    return item.grade == 100
})
console.log(arr32);

10-7. reduce(上一次的结果,每一项) 叠加

var arr33 = [1, 2, 3, 4, 5, 6, 7]
var arr34 = arr33.reduce((prev, item) => {
    return prev + item
}, 0)
console.log(arr34);

数组去重案例

利用对象去重

var ar = [16, 616, 16, 13, 515, 31, 6351, 35, 13]
var obj = {}
for (let i = 0; i < ar.length; i++) {
    // 找到 数字 并赋值
    obj[ar[i]] = '随便'
}
console.log(obj);

var ar2 = []
for (let k in obj) {
    // 获取到的是字符串 转换成  数值
    ar2.push(k - 0)
}
console.log(ar2);

寻找有无重复去重

var ar = [10, 20, 30, 616, 10, 20, 45, 03, 16, 616]
var newar = []
for (let i = 0; i <= ar.length - 1; i++) {
    if (newar.indexOf(ar[i]) === -1) {
        newar.push(ar[i])
    }
}
console.log(newar);

利用 New Set

var ar = [10, 20, 30, 616, 10, 20, 45, 03, 16, 616]
// 使用 ES6 语法将数组去重
var set1 = new Set(ar)
console.log(set1);
// 去重后得到的是对象, 转换成数组
var ar2 = Array.from(set1)
console.log(ar2);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值