javascript的数组方法

1.数组首尾添加/移除数组元素:

arr.push(...items) —— 从尾端添加元素

arr.pop() —— 从尾端提取元素

arr.shift() —— 从首端提取元素

arr.unshift(...items) —— 从首端添加元素

arr.splice(start[, deleteCount, elem1, ..., elemN])  ——可以实现添加,删除,修改数组

它从索引 start 开始修改 arr:删除 deleteCount 个元素并在当前位置插入 elem1, ..., elemN。最后返回已被删除元素的数组

将 deleteCount 设置为 0splice 方法就能够插入元素而不用删除任何元素,负向索引都是被允许的。它们从数组末尾计算位置

arr.slice([start], [end])  ——它会返回一个新数组,将所有从索引 start 到 end(不包括 end)的数组项复制到一个新的数组。start 和 end 都可以是负数,在这种情况下,从末尾计算索引

arr.concat(arg1, arg2...)  —— arr.concat 创建一个新数组,其中包含来自于其他数组和其他项的值,如果参数 argN 是一个数组,那么其中的所有元素都会被复制。否则,将复制参数本身。

  • arr.indexOf(item, from) 从索引 from 开始搜索 item,如果找到则返回索引,否则返回 -1
  • arr.lastIndexOf(item, from) —— 和上面相同,只是从右向左搜索。
  • arr.includes(item, from) —— 从索引 from 开始搜索 item,如果找到则返回 true(译注:如果没找到,则返回 false)。
arr.forEach(function(item, index, array) {
  // ... do something with item
});
arr.forEach 方法允许为数组的每个元素都运行一个函数。

let result = arr.find(function(item, index, array) {
  // 如果返回 true,则返回 item 并停止迭代
  // 对于假值(falsy)的情况,则返回 undefined
});

arr.findIndex 方法(与 arr.find 方法)基本上是一样的,但它返回找到元素的索引,而不是元素本身。并且在未找到任何内容时返回 -1

let results = arr.filter(function(item, index, array) {
  // 如果 true item 被 push 到 results,迭代继续
  // 如果什么都没找到,则返回空数组
});

与 find 大致相同,但是 filter 返回的是所有匹配元素组成的数组

 

let result = arr.map(function(item, index, array) {
  // 返回新值而不是当前元素
})

arr.sort 方法对数组进行 原位(in-place) 排序,更改元素的顺序。(译注:原位是指在此数组内,而非生成一个新数组。)

实现排序
arr.sort(function(a, b) { return a - b; });

str.split(delim) 它通过给定的分隔符 delim 将字符串分割成一个数组

let names = ‘Bilbo, Gandalf, Nazgul‘;

let arr = names.split(‘, ‘);

for (let name of arr) {
  alert( `A message to ${name}.` ); // A message to Bilbo(和其他名字)
}
split 方法有一个可选的第二个数字参数 —— 对数组长度的限制。如果提供了,那么额外的元素会被忽略。

arr.join(glue)与 split 相反。它会在它们之间创建一串由 glue 粘合的 arr 项。

let arr = [‘Bilbo‘, ‘Gandalf‘, ‘Nazgul‘];

let str = arr.join(‘;‘); // 使用分号 ; 将数组粘合成字符串

alert( str ); // Bilbo;Gandalf;Nazgul

arr.reduce 方法和 arr.reduceRight 方法和上面的种类差不多,但稍微复杂一点。它们用于根据数组计算单个值
let value = arr.reduce(function(accumulator, item, index, array) {
  // ...
}, [initial]);
  • accumulator —— 是上一个函数调用的结果,第一次等于 initial(如果提供了 initial 的话)。
  • item —— 当前的数组元素。
  • index —— 当前索引。
  • arr —— 数组本身。
  • arr.reduceRight 和 arr.reduce 方法的功能一样,只是遍历为从右到左

Array.isArray(value)如果 value 是一个数组,则返回 true;否则返回 false

 

 

总结:

  • 添加/删除元素:

    • push(...items) —— 向尾端添加元素,
    • pop() —— 从尾端提取一个元素,
    • shift() —— 从首端提取一个元素,
    • unshift(...items) —— 向首端添加元素,
    • splice(pos, deleteCount, ...items) —— 从 pos 开始删除 deleteCount 个元素,并插入 items
    • slice(start, end) —— 创建一个新数组,将从索引 start 到索引 end(但不包括 end)的元素复制进去。
    • concat(...items) —— 返回一个新数组:复制当前数组的所有元素,并向其中添加 items。如果 items 中的任意一项是一个数组,那么就取其元素。
  • 搜索元素:

    • indexOf/lastIndexOf(item, pos) —— 从索引 pos 开始搜索 item,搜索到则返回该项的索引,否则返回 -1
    • includes(value) —— 如果数组有 value,则返回 true,否则返回 false
    • find/filter(func) —— 通过 func 过滤元素,返回使 func 返回 true 的第一个值/所有值。
    • findIndex 和 find 类似,但返回索引而不是值。
  • 遍历元素:

    • forEach(func) —— 对每个元素都调用 func,不返回任何内容。
  • 转换数组:

    • map(func) —— 根据对每个元素调用 func 的结果创建一个新数组。
    • sort(func) —— 对数组进行原位(in-place)排序,然后返回它。
    • reverse() —— 原位(in-place)反转数组,然后返回它。
    • split/join —— 将字符串转换为数组并返回。
    • reduce/reduceRight(func, initial) —— 通过对每个元素调用 func 计算数组上的单个值,并在调用之间传递中间结果。
  • 其他:

    • Array.isArray(arr) 检查 arr 是否是一个数组。

 

javascript的数组方法

上一篇:JavaStudy——接口的应用:工厂设计模式


下一篇:java陷阱之浮点数运算丢失精度问题