小小数组api,功能屹立在前端

225 阅读3分钟

数组 api

参考MDN: developer.mozilla.org/zh-CN/docs/…

**Array.isArray() **用于确定传递的值是否是一个 Array

Array.isArray([1, 2, 3]);  
// true
Array.isArray({foo: 123}); 
// false
Array.isArray("foobar");   
// false
Array.isArray(undefined);  
// false

arr.splice

语法:arr.splice(第几位开始,删除几位,添加),第一个参数是必填
developer.mozilla.org/zh-CN/docs/…
1)整合新的数组

let  arr = ['t','a','o','w','u'];
arr.splice(1)//第一位开始删除其他  ["t"]
arr.splice(1,1)//第一位开始删除一位 ["t", "o", "w", "u"]
arr.splice(arr.length,0,'t','w','h')//数组长度开始删除0位然后添加  ["t", "a", "o", "w", "u", "t", "w", "h"]

2)字符串转数组

function list() {
          return Array.prototype.slice.call(arguments);
        }
var list1 = list(1, 2, 3);//[1, 2, 3]

数组第一位添加数据

let  arr = ['t','a','o','w','u'];
arr.unshift(0)

或者:

let  arr = ['t','a','o','w','u'];
arr.splice(0,0,"t")

第一位删除数据

let  arr = ['t','a','o','w','u'];
arr.shift(0)

最后一位添加数据

let  arr = ['t','a','o','w','u'];
arr.push(6)

最后一位删除数据

let  arr = ['t','a','o','w','u'];
arr.pop()

数组排序

**sort()** 方法用原地算法对数组的元素进行排序

    let arr = ['1', '2', '6', '77', '7'];
    arr.sort(function (a, b) {
      return a - b;
    })

image.png

数组反转

**reverse()** 方法将数组中元素的位置颠倒

const array1 = ['one', 'two', 'three'];
console.log('array1:', array1);
// expected output: "array1:" Array ["one", "two", "three"]

## 创建新数组 ### 1)slice复制数组或者数组的一部分 主要理解参数第一位为从哪一位开始,第二位为从哪一位结束,这一对象是一个由 `begin` 和 `end` 决定的原数组的**浅拷贝**(包括 `begin`,不包括`end`)。原始数组不会被改变 ``` let arr = ['t','a','o','w','u']; arr.slice() arr.slice(1,3) ``` ### `2) Array.from()` 可以通过以下方式来创建数组对象:
  • 伪数组对象(拥有一个 length 属性和若干索引属性的任意对象)
  • 可迭代对象(可以获取对象中的元素,如 Map和 Set 等)array from()

String 生成数组

Array.from('foo'); 
// [ "f", "o", "o" ]

Set 生成数组

const set = new Set(['foo', 'bar', 'baz', 'foo']);
Array.from(set);
// [ "foo", "bar", "baz" ]

Map 生成数组

const map = new Map([[1, 2], [2, 4], [4, 8]]);
Array.from(map);
// [[1, 2], [2, 4], [4, 8]]
const mapper = new Map([['1', 'a'], ['2', 'b']]);
Array.from(mapper.values());
// ['a', 'b'];
Array.from(mapper.keys());
// ['1', '2'];

从类数组对象(arguments)生成数组

function f() {
  return Array.from(arguments);
}
f(1, 2, 3);
// [ 1, 2, 3 ]

Array.from 中使用箭头函数

// Using an arrow function as the map function to
// manipulate the elements
Array.from([1, 2, 3], x => x + x);
// [2, 4, 6]

3) concat合并两个或多个数组

const array1 = ['a', 'b', 'c'];
const array2 = ['d', 'e', 'f'];
const array3 = array1.concat(array2);

4)解构赋值

image.png

5)array.of()

image.png

字符串转数组

function list() {
          return Array.prototype.slice.call(arguments);
        }
var list1 = list(1, 2, 3);//[1, 2, 3]

数组转字符串

**toString()** 返回一个字符串,表示指定的数组及其元素

const array1 = [1, 2, 'a', '1a'];
console.log(array1.toString());
console.log(array1.join());

join

const elements = ['Fire', 'Air', 'Water'];

console.log(elements.join());
// expected output: "Fire,Air,Water"

console.log(elements.join(''));
// expected output: "FireAirWater"

console.log(elements.join('-'));
// expected output: "Fire-Air-Water"

查找数组中是否含有某个值

**方式一 ****includes()**
**includes()** 方法用来判断一个数组是否包含一个指定的值,根据情况,如果包含则返回 true

const array1 = [1, 2, 3];

console.log(array1.includes(2));
// expected output: true

方式二 **indexOf()**
**indexOf()**方法返回在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回-1

const beasts = ['ant', 'bison', 'camel', 'duck', 'bison'];

console.log(beasts.indexOf('bison'));
// expected output: 1

console.log(beasts.indexOf('giraffe'));
// expected output: -1

获取数组中每一个数据然后进行其他操作(没有返回值)

foreach常用与获取数据之后的过程,forEach()会改变原始的数组的值

    <script>
        const array = ['a', 'b', 'c'];
        array.forEach((item, index) => {
            console.log(item)
        });
    </script>

不要在foreach中进行删除增加数据。

过滤数组

**filter()** 创建一个新数组,return后面跟一个条件判断,如果为true则返回一个新的数组

const words = ['spray', 'limit', 'elite', 'exuberant', 'destruction', 'present'];

const result = words.filter(item => item.length > 6);

console.log(result);
// expected output: Array ["exuberant", "destruction", "present"]

遍历获取新的数组(有返回值,一对一)

遍历返回的新数组不回改变原数组,建议遍历的时候使用

const array1 = [1, 4, 9, 16];

// pass a function to map
const map1 = array1.map(x => x * 2);

console.log(map1);
// expected output: Array [2, 8, 18, 32]

求和或者求平均值

reduce
arr.reduce(sum,currentData,index)

let arr =[0, 1, 2, 3, 4];
arr.reduce((accumulator, currentValue, currentIndex, array)=>{
  return accumulator + currentValue;
});