
slice第一个是只起始点,第二个是只最后一个元素之后的那个位置,开区间

sort有特殊的默认按照字符排序的方式
、
特殊的重复字符串字符的方式
1.join()方法 默认是将字符串转换为字符串,并以“,”隔开元素,而join()中的参数就是替换字符串中的“,”,
而new Array(n+1).join(str)的原理是,创建一个n+1大小的数组,若用join()方法会产生含n个“,”的字符串,而str正好代替这些“,”以造成重复n次str参数的字符串。
2.reverse()方法 将数组的顺序颠倒,注意:原数组会被改变成颠倒后的数组。
3.sort()方法 sort()方法只会对数组进行字符顺序上的排序,例如a,b,c,d,而如果是数字,则会取第一位数的字符顺序进行排序,改完以后原数组会被修改。如果想用sort进行数字上的排序,则应写入函数参数function(a,b){return a-b;},这是升序排列,反之降序是b-a。
4.concat()方法 作用是合并数组,返回值是合并后的数组,原数组不会改变。如果参数是一个一维数组(没有嵌套),则合并的时候会拉平数组,如果是嵌套数组,合并后只会拉平最外一层。
5.slice()方法 切断数组,原数组不会修改,如果传入一个参数n,则返回第n+1个到最后一个元素的数组,如果传入n,m,则返回第n+1到m元素的数组,-1代表最后一个元素,-2代表倒数第二个元素,以此类推,若输入的参数为负数i,j,则返回倒数第|i|个到倒数第|j|+1个元素,总结来说,对于正数,左区间开,对于负数,右区间开。
6.splice胶结方法 切断数组胶结数组,原数组会被修改,输入参数n,那么原数组第n+1个元素到最后一个元素都会被删除(会作为该函数的返回值),如果输入参数m,n,则删除第m+1个到第m+n个元素。如果输入两个以上的参数则删除前两个参数所指定的元素,替换上剩下的参数。
//这一小节我们会介绍数组的一些方法
undefined
//对于对象,我们之所以可以调用它下面的很多的方法,是因为它的原型链上有一个object.prototype这个对象,它下面包含着所有的方法(你也可以称之为属性)
undefined
//对于数组,我们也有一个array.prototype这个对象下的方法,当然我们一般来说是用es5的方法,因为老的版本ie678只支持一些非es5的放啊
undefined
//1、join方法,将数组转换成字符串,选择以什么方式将数组输出
undefined
var arr = [1,2,3];
undefined
arr
(3) [1, 2, 3]
arr.join('_')
"1_2_3"
//其实join最广泛的一个应用还是重复
undefined
function repeatString(str,n){return new Array(n+1).join(str);}
undefined
repeatString('a',3)
"aaa"
repeatString('Hi',4)
"HiHiHiHi"
//2、reverse方法是将数组倒过来,它也会影响到原来的arr
undefined
arr.reverse()
(3) [3, 2, 1]
arr
(3) [3, 2, 1]
//3、sort函数,实际上我们对JavaScript的里面有误解,默认情况下它是按照字符的顺序排列,而且还是将每个元素看作一个字符串,然后判断字符串的第一个元素的大小然后排序.
undefined
arr2 = ['a','c','b']
(3) ["a", "c", "b"]
arr2.sort()// 而且原数组也会被修改
(3) ["a", "b", "c"]
arr.sort()
(3) [1, 2, 3]
//所以我们要给这个数组加入一些方法函数
undefined
6164:1 Unchecked runtime.lastError: The message port closed before a response was received.
arr.sort(function(a,b){return a-b;//这个的意思是a大于b的话返回true,表示需要交换
})
(3) [1, 2, 3]
//而且上面可以看到直接在方法里面加函数的话不需要定义名字
undefined
//再举例
undefined
arr4 = [{age:1},{age:45},{age:70}];
VM12181:1 Uncaught SyntaxError: Invalid or unexpected token
arr4 = [{age:1},{age:45},{age:70}];
(3) [{…}, {…}, {…}]
arr4.sort(function(a,b){return a.age-b.age;})
(3) [{…}, {…}, {…}]0: {age: 1}1: {age: 45}2: {age: 70}length: 3__proto__: Array(0)
arr4
(3) [{…}, {…}, {…}]
arr4.forEach(function(item){
console.log(item.age);
})
VM12460:2 1
VM12460:2 45
VM12460:2 70
undefined
//上面是一个foreach的方法
undefined
//4、concat方法
undefined
//concat方法是将数组进行合并,这个和上面几个方法的不同点在于它并不会改变原来的数组,而是会产生一个新的数组,原来的数组并不会被修改
undefined
arr.concat([4,5])
(5) [1, 2, 3, 4, 5]
arr.concat([1,2],[4,[56,4]])
(7) [1, 2, 3, 1, 2, 4, Array(2)]
//上面可以看见会将括号里面的第一层数组拉平,但是里面嵌套的数组只会被当作元素
undefined
//5、slice方法是返回某个元素的一个片段,是一个左臂右开的区间,这个函数是支持负数索引的
undefined
arr = [1,2,3,4,5]
(5) [1, 2, 3, 4, 5]
arr.slice(1,3)
(2) [2, 3]
//slice也不会对原数组进行修改
undefined
//6、splice数组拼接,非常鸡肋
undefined
arr
(5) [1, 2, 3, 4, 5]
//function1
undefined
arr.splice(2)
(3) [3, 4, 5]
arr
(2) [1, 2]
// 愿数组被修改,表示从第二个元素一直到尾部全部切下来扔掉
undefined
//function2:添加第二个参数,表示切下来几个
undefined
var arr = [1,2,3,4,5];
undefined
arr.splice(2,2,'a','b')//这个懒得写function3了,基本就是因为是连续切的,你切下来的空白可以用另外一个数组补上
(2) [3, 4]
arr
(5) [1, 2, "a", "b", 5]
数组方法..
splice会改变原数组
索引"-1"表示最后一个元素 slice取值是左闭右开
注意最后一个示例里取值索引都是负值
slice不会改变原数组
arr.sort(function(a, b){ return a-b;}); 从小到大排序
设置一个空数值的数组,把想重复的字符串当分隔符;3个数字2个分隔符,把数组扩大1,那么就能重复n次了
切除数组的部分.arr.splice()
sort(function(a,b){return a-b;})方法
reverse方法:
join方法:
var arr = [1, 2, 3, 4, 5]; //从指定索引剪切到最后 arr.splice(2); //输出[3, 4, 5] arr; //[1, 2] //指定索引开始,剪切指定个数 arr = [1, 2, 3, 4, 5]; arr.splice(2, 2); //[3, 4] arr; //[1, 2, 5] //指定索引开始,剪切指定个数,再往【原数组】【指定索引处】塞入新元素 arr = [1, 2, 3, 4, 5]; arr.splice(1, 1, "a", "b"); //[2] arr; //[1, "a", "b", 3, 4, 5]
数组上存在大量的方法
console.log(11)
sort数组排序会修改原数组
arr.slice() 获取部分数组
splice(a,b,c,d..) ,数组删除与拼接 a:位置,b数量,c、d...替换的值
数组转字符串: arr.join() arr.join("-")
数组逆序:arr.reverse()
数组拼接,原数组会被修改
1表示第2个索引,3表示想获取的最后一个元素
slice不会对原数组修改
concat不会修改原数组
先数组,后数,数组会被拉平,10.11被拉平
参数是数组,并且数组的元素还是数组,这种情况不会被拉平二次
sort的排序,原数组被 修改
按照期望进行排序,加一个排序函数,a 和b表示每2个元素
对象形式排序,用a.age ,b.age,结果用foreach 方法遍历
逆序方法,对数组进行修改
join方法,将数组转为字符串,拼URL的参数,想把数组打印出来
3个元素会得利2次_
Array的原型的许多方法
数组的原型是Array.prototype,也有大量的方法
slice、concat 、map不会改变原数组;
reverse、sort会改变原数组;
splice会改变原数组;返回被删除的属性;
every所有属性满足条件才会返回true;
some只要有一个满足的就会返回true;
判断数组的方式:
Array.isArray([]); // true
[] instanceof Array; // true
({}).toString.apply([]) === '[object Array]'; // true
[].constructor === Array; // trure
arr.splice(n)把数组第n位后的所有元素切掉,原数组会被修改
arr.splice(n,m) 删除第n+1位到第n+m位的元素
arr.splice(n,m,x,y)还可以在删除第n+1位到第n+m位元素的基础上添加x和y
arr.concat()实现数组合并
PS:原数组没有被修改
concat( [],[] ) : ()内的[]会被拉平一次;
concat([ n , [n+1] ]): [n+1]这里面一层的不会被拉平,但是外面的一层[]可以拉平
因此[]只会拉平一次