美文网首页
数组array方法

数组array方法

作者: 肥羊猪 | 来源:发表于2021-01-21 10:53 被阅读0次

es6操作符... 复制数组
...语法和 Object.assign() 行为一致, 执行的都是浅拷贝(只遍历一层)

const stuendts = ['Jine','Tom']; 
const persons = ['Tony',... stuendts,'Aaron','Anna'];
persions // ["Tony", "Jine", "Tom", "Aaron", "Anna"]

var arr1 = [0, 1, 2];
var arr2 = [3, 4, 5];
var arr3 = [...arr1, ...arr2];// 将 arr2 中所有元素附加到 arr1 后面并返回
//等同于
var arr4 = arr1.concat(arr2);

...语法对对象函数也适用
var obj1 = { foo: 'bar', x: 42 };
var obj2 = { foo: 'baz', y: 13 };
var clonedObj = { ...obj1 };
// 克隆后的对象: { foo: "bar", x: 42 }
var mergedObj = { ...obj1, ...obj2 };
// 合并后的对象: { foo: "baz", x: 42, y: 13 }

数组转对象:

tempList = ['a','b','c']
{...tempList} // {0: "a", 1: "b", 2: "c"}
Object.assign({},tempList); // {0: "a", 1: "b", 2: "c"}

1.push(): 向数组尾部添加一个或多个元素,并返回添加新元素后的数组长度。注意,该方法会改变原数组

 var arr = [1,2,3];
 console.log(arr);        //  [1, 2, 3]
 var b = arr.push(4);  
 console.log(b);          //  4   //表示当前数组长度
 console.log(arr);        // [1, 2, 3, 4]   

pop(): 删除数组的最后一个元素,并返回该元素。注意,该方法会改变原数组

 var arr = [1,2,3];
 console.log(arr);                // [1,2,3]
 arr.pop();
 console.log( arr.pop() );  // [3]  //返回删除的元素
 console.log(arr);                // [1,2] 

2.unshift():在数组的第一个位置添加元素,并返回添加新元素后的数组长度。注意,该方法会改变原数组。

 var arr = ['a', 'b', 'c'];
 arr.unshift('x');        // 4
 console.log(arr);        // ['x', 'a', 'b', 'c']

shift():删除数组的第一个元素,并返回该元素。注意,该方法会改变原数组。

 var arr = ['a', 'b', 'c'];
arr.shift()         // 'a'
console.log(arr)     // ['b', 'c'] 

shift()方法还可以遍历并清空一个数组。

var list = [1, 2, 3, 4, 5, 6];
var item;
while (item = list.shift()) {
  console.log(item+',');//1, 2, 3, 4, 5, 6,
}
console.log(list);     // []

3.valueOf():返回数组的本身

 var arr = [1, 2, 3];
 arr.valueOf()     // [1, 2, 3]    

indexOf():返回指定元素在数组中出现的位置,如果没有出现则返回-1

var arr = ['a', 'b', 'c'];
arr.indexOf('b') // 1
arr.indexOf('y') // -1

indexOf方法还可以接受第二个参数,表示搜索开始位置

['a', 'b', 'c'].indexOf('a', 1)     // -1
从1号位置开始搜索字符a,结果为-1,表示没有搜索到。

toString():返回数组的字符串形式。

var arr = [1, 2, 3];
 arr.toString()     // "1,2,3"
 var arr = [1, 2, 3, [4, 5, 6]];
二维数组转字符串
 arr.toString()     // "1,2,3,4,5,6"

4.join():以参数作为分隔符,将所有数组成员组成一个字符串返回。如果不提供参数,默认用逗号分隔

var arr = [1, 2, 3, 4];
arr.join(' ')     // '1 2 3 4'
arr.join(' | ')     // "1 | 2 | 3 | 4"
arr.join()     // "1,2,3,4"

5.concat():用于多个数组的合并。它将新数组的成员,添加原数组的尾部,然后返回一个新数组原数组不变

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

6.reverse():用于颠倒数组中元素的顺序,返回改变后的数组。注意,该方法将改变原数组

var arr = ['a', 'b', 'c'];
 arr.reverse() // ["c", "b", "a"]
 console.log(arr) // ["c", "b", "a"]

7.slice():用于截取原数组的一部分,返回一个新数组原数组不变
slice(start,end)它的第一个参数为起始位置(从0开始),第二个参数为终止位置(但该位置的元素本身不包括在内)。如果省略第二个参数,则一直返回到原数组的最后一个成员

var arr = ['a', 'b', 'c'];
arr.slice(0)         // ["a", "b", "c"]
arr.slice(1)         // ["b", "c"]
arr.slice(1, 2)     // ["b"]
arr.slice(2, 6)     // ["c"]
arr.slice()           // ["a", "b", "c"]    无参数返回原数组
arr.slice(-2)          // ["b", "c"]    参数是负数,则表示倒数计算的位置
arr.slice(-2, -1)     // ["b"]

8.splice():删除原数组的一部分成员,并可以在被删除的位置添加入新的数组成员,返回值是被删除的元素。注意,该方法会改变原数组

splice(start,delNum,addElement1,addElement2,...)第一个参数是删除的起始位置,第二个参数是被删除的元素个数。如果后面还有更多的参数,则表示这些就是要被插入数组的新元素

 var arr = ['a', 'b', 'c', 'd', 'e', 'f'];
 arr.splice(4, 2)     // ["e", "f"]  从原数组4号位置,删除了两个数组成员
 console.log(arr)     // ["a", "b", "c", "d"]

 var arr = ['a', 'b', 'c', 'd', 'e', 'f'];
 arr.splice(4, 2, 1, 2)     // ["e", "f"]  原数组4号位置,删除了两个数组成员,又插入了两个新成员
 console.log(arr)         // ["a", "b", "c", "d", 1, 2]

 var arr = ['a', 'b', 'c', 'd', 'e', 'f'];
 arr.splice(-4, 2)     // ["c", "d"]    起始位置如果是负数,就表示从倒数位置开始删除

 var arr = [1, 1, 1];
 arr.splice(1, 0, 2)     // []    如果只插入元素,第二个参数可以设为0
 conlose.log(arr)     // [1, 2, 1, 1]

 var arr = [1, 2, 3, 4];
 arr.splice(2)     // [3, 4] 如果只有第一个参数,等同于将原数组在指定位置拆分成两个数组
 console.log(arr)     // [1, 2]

9.sort():对数组成员进行排序,默认是按照字典顺序排序。排序后,原数组将被改变

['d', 'c', 'b', 'a'].sort()
// ['a', 'b', 'c', 'd']
[4, 3, 2, 1].sort()
// [1, 2, 3, 4]
[11, 101].sort()
// [101, 11]
[10111, 1101, 111].sort()
// [10111, 1101, 111]

sort方法不是按照大小排序,而是按照对应字符串字典顺序排序。也就是说,数值会被先转成字符串,再按照字典顺序进行比较,所以101排在11的前面。
如果想让sort方法按照自定义方式排序,可以传入一个函数作为参数,表示按照自定义方法进行排序。该函数本身又接受两个参数,表示进行比较的两个元素。如果返回值大于0,表示第一个元素排在第二个元素后面;其他情况下,都是第一个元素排在第二个元素前面。

var arr = [10111, 1101, 111];
arr.sort(function (a, b) {
  return a - b;
})
// [111, 1101, 10111]

var arr1 = [
              { name: "张三", age: 30 },
              { name: "李四", age: 24 },
              { name: "王五", age: 28 }
           ]

arr1.sort(function (o1, o2) {
  return o1.age - o2.age;
})
// [
//   { name: "李四", age: 24 },
//   { name: "王五", age: 28 },
//   { name: "张三", age: 30 }
// ]

10.map():对数组的所有成员依次调用一个函数,根据函数结果返回一个新数组原数组没有变化

var numbers = [1, 2, 3];
numbers.map(function (n) {
  return n + 1;
});
// [2, 3, 4]
numbers
// [1, 2, 3]

11.filter():参数是一个函数所有数组成员依次执行该函数,返回结果为true的成员组成一个新数组返回。该方法不会改变原数组

 var arr = [1, 2, 3, 4, 5]
 arr.filter(function (elem) {
   return (elem > 3);
 })
 // [4, 5]

concat() 连接两个或更多的数组,并返回结果。
copyWithin() 从数组的指定位置拷贝元素到数组的另一个指定位置中。
entries() 返回数组的可迭代对象
every() 检测数值元素的每个元素是否都符合条件
fill()使用一个固定值填充数组。
filter() 检测数值元素,并返回符合条件所有元素的数组
find() 返回符合传入测试(函数)条件数组元素
findIndex() 返回符合传入测试(函数)条件数组元素索引
forEach() 数组每个元素都执行一次回调函数
from() 通过给定的对象中创建一个数组
includes() 判断一个数组是否包含一个指定的值
indexOf() 搜索数组中的元素,并返回它所在的位置
isArray() 判断对象是否为数组
join() 把数组的所有元素放入一个字符串
keys() 返回数组的可迭代对象,包含原始数组键(key)
lastIndexOf() 搜索数组中的元素,并返回它最后出现的位置
map() 通过指定函数处理数组的每个元素,并返回处理后的数组
pop() 删除数组的最后一个元素并返回删除的元素
push() 向数组的末尾添加一个或更多元素,并返回新的长度
reduce()将数组元素计算一个值从左到右)。
reduceRight()将数组元素计算为一个值(从右到左)。
reverse() 反转数组的元素顺序
shift() 删除并返回数组的第一个元素
slice() 选取数组的一部分,并返回一个新数组
some() 检测数组元素中是否有元素符合指定条件
sort() 对数组的元素进行排序
splice() 从数组中添加或删除元素。
toString() 把数组转换字符串,并返回结果
unshift() 向数组的开头添加一个或更多元素,并返回新的长度
valueOf() 返回数组对象的原始值

相关文章

网友评论

      本文标题:数组array方法

      本文链接:https://www.haomeiwen.com/subject/ccprzktx.html