什么是数组?

数组就是一个又一个元素组成的有序集合,数组取值用的是下标

数组有两种声明方式:

1.字面量声明

2.构造函数声明

// var arr = [1,{},'']
	
// var arr1 = new Array()

数组.length

var arr = [1,2,3,4,5,6]
for(var i=0;i<=arr.length-1;i++){
   console.log(arr[i],i)
}

 1.push() 可以添加一个或多个参数到数组的尾部,添加之后原来的数组会发生改变,返回的是添加后的数组的长度

const array = [1, 2, 3]
        console.log(array); //初始数组
        const newArray = array.push(4, 5, 6, 7)
        console.log(array); //添加过后的数组

2.unshift 往数组的头部添加数据 unshift的返回值也是新数组的长度

var arr = ['a', 'b', 'c', 'd']
arr.unshift('e')
console.log(arr) // ['e', 'a', 'b', 'c', 'd']打印的结果

3.pop 从数组的尾部删除一个数据 pop的返回值时删除的数据

var arr = ['a', 'b', 'c', 'd']
    arr.pop()
    console.log(arr); ['a', 'b', 'c']//返回值

4.shift从数组的头部删除一个数据 返回值也是删除的数据

var arr = ['a', 'b', 'c', 'd']
    arr.shift()
    console.log(arr) // ['b', 'c', 'd']
//总结 数组头部尾部添加数据的方法返回值都是新数组的长度
// 头部尾部删除数据的方法返回值都是删除的数据
//push unshift pop shift都会改变元素组

5.splice方法 操作数组中的数据 splice的返回值是包含了所有删除的数据的数组

var arr = ['a', 'b', 'c', 'd', 'e']
arr.splice(0, 2, 'f') // 这句代码的意思是在数组中从0的位置删除两个 第三个参数时要添加的数据
console.log(arr)// 删除后剩下的数组数据

6.isArray() 这个方法用来判断一个对象是不是数组,是的话返回true,否则返回false

const array = [1, 2, 3, 4, 6]
        console.log(Array.isArray(array));

7.map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。

map() 方法按照原始数组元素顺序依次处理元素。

const array = [1, 2, 3, 4]
        console.log(array);
        const newArray = array.map(x => {
            return x + 1
        })
        console.log(newArray);

8.sort -- 排序  返回排序后的数组

var a = arr.sort((a,b)=>b-a)
			
			arr.sort((a,b)=>{
				return b - a
			})
			
			var arr1 = [{age:10},{age: 8},{age:20}]
			
			console.log(arr)
			console.log(a)
			
			arr1.sort((a,b)=>{
				return b.age-a.age
			})
			
			console.log(arr1)

9.reverse  -- 数组反转(就是倒着)

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

10.循环遍历数组 forEach  -- 对数组进行循环遍历

var arr = [1,2,3,4]
			
			var a = arr.forEach((item,index)=>{
				console.log(item,index)
			})

11.filter -- 数组过滤  返回 所有符合条件的元素 一个新数组

var arr = [1,2,3,4,5,6,1]
			
			var a = arr.filter(item=>item>4)
console.log(arr)
			
			console.log(a)

12.map -- 对数组的每一项进行操作,返回新数组

var arr = [1,2,3,4,5,6,1]
var a = arr.map(item=>item*3)
console.log(a)
**注'=>'这东西就是箭头函数不是啥大不了的东西
因为后边参数就一个所以可以省略大括号想写的话就:
var a = arr.map(item=>{
    return item*3
})

13.some  -- 判断数组中是否有满足条件的元素 如果有返回true 没有 false(那怕只满足一个条件也会返回)

var arr = [1,2,3,4,5,6,1]
 var a = arr.some(item=>item>30)  //里边没有比30大的所以一定返回false
console.log(a)

14.every -- 判断数组中是否元素是否全部满足条件 如果是返回true 否则 false

var arr = [1,2,3,4,5,6,1]
var a  = arr.every(item=>item>0) //都大于0所以一定是true
console.log(a)

15.indexOf --  查找第一个符合条件的下标,查到不到返回-1

var arr = [1,2,3,4,5,6,1]
let a = arr.indexOf(1) //注:看好了返回的是下标!下标!
console.log(a)

16.lastIndexOf --  查找最后一个符合条件的下标,查到不到返回-1

var arr=[1,2,3,4,5,6,1]
let a = arr.lastIndexOf(1)
console.log(a)

17.findIndex -- 查找第一个符合条件的下标,查到不到返回-1

var arr = [1,2,3,4,5,6,1]
var a = arr.findIndex(item=>item==3)
console.log(a)

18.find  -- 查找第一个符合条件的元素,查到不到返回undefined

var arr = [1,2,3,4,5,6,1]
var a = arr.find(item=>item==5) //返回的是找到的元素
console.log(a)

19.includes -- 是否包含某个元素  如果包含 true;否则 false

var arr = [1,2,3,4,5,6,1]
var a = arr.includes(6)
console.log(a)

 * 七个内置的操作方法: 改变数组本身

             *      push  -- 尾部添加 返回新数组的长度

             *      pop  -- 尾部删除  返回的是被删除的元素

             *      shift  -- 头部删除

             *      unshift

             *      sort -- 排序  返回排序后的数组

             *      reverse  -- 数组反转

             *      splice -- 增加 删除 修改;本质上是删除

             *      数组.splice(从哪里开始的下标,删除的长度,要替换的值)

这七个是可以改变数组本身的,其他的是返回新数组不对原数组改变

另外还可以把数组转换成字符串

 数组中 toString() 方法能够把每个元素转换为字符串,然后以逗号连接输出显示。

var a = [1,2,3,4,5,6,7,8,9,0];  //定义数组
var s = a.toString();  //把数组转换为字符串
console.log(s);  //返回字符串“1,2,3,4,5,6,7,8,9,0”
console.log(typeof s);  //返回字符串string,说明是字符串类型

toLocalString() 方法与 toString() 方法用法基本相同,主要区别在于 toLocalString() 方法能够使用用户所在地区特定的分隔符把生成的字符串连接起来,形成一个字符串。

var a = [1,2,3,4,5];  //定义数组
var s = a.toLocalString();  //把数组转换为本地字符串
console.log(s);  //返回字符串“1,2,3,4,5,6,7,8,9,0”

join() 方法可以把数组转换为字符串,不过它可以指定分隔符。在调用 join() 方法时,可以传递一个参数作为分隔符来连接每个元素。如果省略参数,默认使用逗号作为分隔符,这时与 toString() 方法转换操作效果相同。

var a = [1,2,3,4,5];  //定义数组
var s = a.join("==");  //指定分隔符
console.log(s);  //返回字符串“1==2==3==4==5”

split() 方法是 String 对象方法,与 join() 方法操作正好相反。该方法可以指定两个参数,第 1 个参数为分隔符,指定从哪儿进行分隔的标记;第 2 个参数指定要返回数组的长度。

var s = "1==2== 3==4 ==5";
var a = s.split("==");
console.log(a);
console.log(a.constructor == Array);

能转字符串当然也能转回来下面介绍几个字符串转数组的方法

常见的转换技术是split字符串方法,但这也是有问题的一种。

通过使用空字符串作为split方法的分隔符,我们可以将字符串转换为字符数组。

const text = "abc";
const chars = text.split('');
console.log(chars);
//['a', 'b', 'c']

该split方法无法正确处理采用两个代码单元(如表情符号)的字符。下面是一个例子。

const text = "abc????";
const chars = text.split('');
console.log(chars);
//["a", "b", "c", "\ud83d", "\ude0e"]

展开运算符 ( ...) 允许在需要多个元素(如数组文字)的地方扩展诸如字符串之类的可迭代对象。

这是将字符串扩展为字符数组的示例。正确处理采用两个代码单元的字符。

const text = "abc????";
const chars = [ ...text ];
console.log(chars);
//["a", "b", "c", "????"]

解构赋值语法可以将数组或可迭代对象中的值解包为不同的变量。

在解构数组或可迭代对象时,我们可以使用 rest 模式将其剩余部分提取到单个变量中。

const text = "abc????";
const [ ...chars ] = text;
console.log(chars);
//["a", "b", "c", "????"]

Array.from辅助创建从阵列状或迭代的对象的新数组。字符串既可迭代又类似于数组,因此,可以成功地将其转换为字符数组。

const text = "abc????";
const chars = Array.from(text);
console.log(chars);
//["a", "b", "c", "????"]