JS 数组详解

添加

  • push(向数组的后面添加)
let arr = ["html","css"];
// 1.push  向数组的后面添加
arr.push("js")
console.log(arr); // ["html", "css", "js"]
  • unshift(向数组的前面添加值)
let arr = ["html","css"];
// unshift 向数组的前面添加值
arr.unshift("vue");
console.log(arr)
// ["vue", "html", "css"]
  • 扩展运算符
    ...arr 可以将一个数组展开
var arr = [1,2,3]
console.log(arr); // [1, 2, 3]
console.log(...arr); // 1 2 3

var a=[4,5,6]
var b = [7,8,9]
a.push(...b)  // 拼接数组
console.log(a); // [4, 5, 6, 7, 8, 9]
  • concat( ) 连接两个数组 (不改变原数组的内容)
var arr = [1,2,3];
var c = [4,5,6];
var b = arr.concat(c);

console.log(arr);  // [1,2,3]
console.log(b);    // [1,2,3,4,5,6]

遍历

  • forEach(遍历)
arr.forEach(function(item, index){
  console.log(item, index)
// html 0
// css 1
})
  • of 方法
var arr = [2,3,4,5]
for(var i of arr){
  console.log(i);
/*
2
3
4
5
*/
}
  • map 方法(可以改变数组的每一项,变成一个新数组)
    1.数组的每一项是基础(简单)类型,执行map不会改变数组原来的结构
    2.数组的每一项为复杂类型,会改变原来的数据结构
var arr = [2,3,4,5]
var res = arr.map((item=>{
  return item*2
}))
console.log(arr);  // [2,3,4,5]
console.log(res);  // [4,6,8,10]
  • some 方法
    只要数组中有一项满足条件,就输出true
var arr = [1,2,3,4,5]
var res = arr.some(item =>{
  return item>3
})
console.log(res); // true
  • every 方法
    数组中的每一项满足条件,才输出true
var arr = [1,2,3,4,5]
var str = arr.every(item => item >2)
console.log(str);  //false

删除

  • pop( ) 从尾部删除
var arr = [1,2,3,4]
arr.pop()
console.log(arr) // [1,2,3]
  • shift( ) 从头部删除
var arr = [1,2,3,4]
arr.shift()
console.log(arr); // [2,3,4]

查询

  • arr[index] 查询对应下标的值
//arr[index] 查询对应下标的值
var arr=[1,2,3];
console.log(arr[0]);  //1;
  • indexOf(value) 查询对应值的下标
var arr=[1,2,3,4];
console.log(arr.indexOf(1)); // 0
//如果没有对应的值,则返回-1
  • includes(value) 判断数组是否包含某个值
// 返回boolean
var arr = [1,2,3,4]
console.log(arr.includes(5)); // false
  • slice(start,end) 截取 (包含开始,不含结束)
// slice(startIndex,endIndex) 截取 包含开始不含结束
// slice(startIndex) 截取从startIndex开始到后面的所有值
var arr = [1,2,3,4]
console.log(arr.slice(1,3));  // [2,3]
console.log(arr.slice(1)); // [2,3,4]

sort 排序

  • 升序算法
var arr = [4,7,18,20,3]  // [3,4,7,18,20]
/* 升序算法 */
arr.sort((a,b)=>{
  return a-b;
})
console.log(arr);
  • 降序算法
var arr = [4,7,18,20,3]
arr.sort((a,b)=>{
  return b-a;
})
console.log(arr);

取最大值 Math.max( )

  • Math.max(...arr) 对数组取最大值
var arr = [1,2,3]
console.log(Math.max(...arr)); // 3
  • Math.min(...arr) 取最小值
// 简单的算法实现
var arr = [4,3,2,1]
var minNum = arr[0]
for(var i=1;i<arr.length;i++){
  if(minNum>arr[i]){
    minNum=arr[i]
  }
}
console.log(minNum);

// Math.min(...arr) 取最小值
var arr = [4,3,1]
console.log(Math.min(...arr)); // 1

arr.reverse( ) 反转

var arr = ["html","css","javascript"]
console.log(arr.reverse());  // ["javascript","css","html"]

findIndex()

  • 普通数组查索引
let arr=[1,2,3,4,5,6];
console.log(arr.findIndex(o=> o==20))
//找不到时返回 -1

console.log(arr.findIndex(o=> o==2))
//返回2的索引是 1

//若有多个符合条件的元素,则返回第一个元素索引。
console.log(arr.findIndex(o=> o>2))
//返回是第一个也就是3的索引 2
  • 对象数组查索引
let arr1=[
    {name:"张三",age:16},
    {name:"张四",age:18},
    {name:"王五",age:20},
]

console.log(arr1.findIndex(o=> o.name=="张四"))
//返回张四的索引是 1

//若有多个符合条件的元素,则返回第一个元素索引。
console.log(arr1.findIndex(o=> o.age>19))
//返回是第一个也就是王五的索引 2

filter 方法 (筛选,过滤)

此方法也不会改变原始数组,会返回一个筛选成功匹配的元素组成的新数组

// 查找符合条件的元素,主要用于筛选
var arr =[1,2,3,4,5]
var res = arr.filter(item =>item>2)
console.log(res); // [3, 4, 5]

splice()

  • 删除 —- splice(index,len)
arr = ['a','b','c','d']
arr.splice(1,1) 
console.log(arr)
//['a','c','d'] 删除起始下标为1,长度为1的一个值,len设置的1,如果为0,则数组不变

arr.splice(1,2) 
console.log(arr)  //['a','d'] 删除起始下标为1,长度为2的一个值,len设置的2

//删除第一个
arr.splice(0,1) 
//删除最后一个
arr.splice(arr.length-1,1)
  • 替换 —- splice(index,len,[新值])
arr = ['a','b','c','d']
arr.splice(1,1,'ttt') 
console.log(arr)
//['a','ttt','c','d'] 替换起始下标为1,长度为1的一个值为‘ttt',len设置的1

arr.splice(1,2,'ttt') 
console.log(arr)
//['a','ttt','d'] 替换起始下标为1,长度为2的两个值为‘ttt',len设置的1
  • 添加 —- splice(index,0,[新值]) 第二个值 是固定为0
arr = ['a','b','c','d']
arr.splice(1,0,'ttt') 
console.log(arr)
//['a','ttt','b','c','d'] 表示在下标为1处添加一项‘ttt'

过滤

  • 简单数组示例
var a =[1,2,3,4,5,6,7,8,9]
var r = a.filter(o=> o<5)
console.log(r)

//输出结果:
[1, 2, 3, 4]
  • 数组对象示例
var aa =[
{id:1,name:"张三"},
{id:2,name:"李四"},
{id:3,name:"王五"}
]
var bb = aa.filter(o=> o.id<3)
console.log(bb)

//输出结果
0: {id: 1, name: "张三"}
1: {id: 2, name: "李四"}

数组截取

  • 取数组某一段的值
    Array<number>.slice(start?: number, end?: number): number[]
var array = [1, 2, 3, 4, 5]
const subArr = array.slice(0, 1)
console.log(subArr) // [1]

const subArr = array.slice(0, 10)
console.log(subArr) // [1, 2, 3, 4, 5]

const subArr = array.slice(0, -2)
console.log(subArr) // [1, 2, 3]

join()

join() 方法用于把数组中的所有元素放入一个字符串。
元素是通过指定的分隔符进行分隔的。

  • 语法
arrayObject.join(separator)
  • 实例
var list = ["赵","钱","孙"]
console.log(list.join())

//输出结果: 赵,钱,孙

var list = ["赵","钱","孙"]
console.log(list.join("|"))
//输出结果  赵|钱|孙

console.log(list.join("==="))
//输出结果  赵===钱===孙
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,029评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,395评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,570评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,535评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,650评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,850评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,006评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,747评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,207评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,536评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,683评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,342评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,964评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,772评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,004评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,401评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,566评论 2 349

推荐阅读更多精彩内容

  • JavaScript中创建数组有两种方式 (一)使用 Array 构造函数: var arr1 = new Arr...
    Gimmy呵呵阅读 408评论 0 1
  • Array   数组总共有22种方法,将其分类为对象通用方法、数组转换方法、栈和队列方法、数组排序方法、数组拼接方...
    小小的开发人员阅读 484评论 0 7
  • 数组的定义 数组是一组数据的集合,在内存中是一段连续的内存空间。 数组的特点 数组定义时可以无需指定数组长度 存储...
    江海大初学者阅读 5,362评论 0 4
  • 第一部分: 定义阐述 数组的定义: 数组就是值的有序集合.每个值所在数组中的位置称为 索引表现形式: 就是内存中的...
    奔云阅读 803评论 0 52
  • 数组 知识汇总 前置知识: 数组是一个有序的数据集合,可使用数组名称和索引进行访问。 在JavaScript中数组...
    Daeeman阅读 659评论 1 7