Array.prototype.concat

1. 语法

DANGER

arr.concat(value1[, value2[, ...[, valueN]]])

参数:

  • valueN:数组或值。

返回值:

一个新的数组实例。

2. 描述

concat 方法创建一个新的数组,它由被调用的对象中的元素组成,每个参数的顺序依次是该参数的元素(如果参数是数组)或参数本身(如果参数不是数组)。它不会低轨道嵌套数组参数中。

concat 方法不会改变 this 或任何作为参数提供的数组,而是返回一个浅拷贝,它包含与原始数组相结合的相同元素的副本。

个人在日常开发中常用场景:

  • 偶尔需要拼接数组时会使用。

3. 示例

  • concatenating two arrays

    const letters = ['a', 'b', 'c'];
    const numbers = [1, 2, 3];
    letters.concat(numbers); // ['a', 'b', 'c', 1, 2, 3]
    
  • concatenating three arrays

    const num1 = [1, 2, 3];
    const num2 = [4, 5, 6];
    const num3 = [7, 8, 9];
    
    num1.concat(num2, num3); // [1, 2, 3, 4, 5, 6, 7, 8, 9]
    
  • concatenating values to an array

    const letters = ['a', 'b', 'c'];
    
    letters.concat(1, [2, 3]); // ['a', 'b', 'c', 1, 2, 3]
    
  • concatenating nested arrays

    const num1 = [[1]];
    const num2 = [2, [3]];
    
    num1.concat(num2); // [[1], 2, [3]]
    num1[0].push(4); // [[1, 4], 2, [3]]
    

Array.prototype.includes

1. 语法

DANGER

arr.includes(valueToFind[, fromIndex])

参数:

  • valueToFind:需要查找的元素;
  • fromIndex:从 fromIndex 索引处开始查找 valueToFind,可为负值。

返回值:

一个布尔值。

2. 描述

includes 方法用来判断一个数组是否包含一个指定的值,包含返回 true,否则返回 false。

个人在日常开发中常用场景:

  • 常用于替代多个连续的 && 操作。

3. 示例

  • fromIndex is greater than or equal to the array length

    const arr = ['a', 'b', 'c'];
    
    arr.includes('c', 3); // false
    arr.inclueds('c', 100); // false
    
  • computed index is less than o

    const arr = ['a', 'b', 'c'];
    
    arr.includes('a', -100); // true
    arr.includes('b', -100); // true
    arr.includes('c', -100); // true
    arr.includes('a', -2); // false // 3 + (-2) = 1
    
  • includes() used as a generic method

    (function() {
      console.log([].includes.call(arguments, 'a')); // true
      console.log([].includes.call(arguments, 'd')); // false
    })('a','b','c');
    

Array.prototype.indexOf

1. 语法

DANGER

arr.indexOf(searchElement[, fromIndex = 0])

参数:

  • searchElement:要查找的元素;
  • fromIndex:开始查找的位置。

返回值:

首个被找到的元素在数组中的索引位置,若没有找到则返回 -1。

2. 描述

描述即返回值。

个人在日常开发中常用场景:

  • 查找索引,判断元素是否存在。

3. 示例

  • finding all the occurrences of an element

    let indices = [];
    const array = ['a', 'b', 'a', 'c', 'a', 'd'];
    const element = 'a';
    let idx = array.indexOf(element);
    
    while (idx !== -1) {
      indices.push(idx); // [0, 2, 4]
      idx = array.indexOf(element, idx + 1);
    }
    
  • finding if an element exists in the array or not and updating the array

    function updateVegetablesCollection(veggies, veggie) {
      if (veggies.indexOf(veggie) === -1) {
        veggies.push(veggie);
        console.log('New veggies collection is : ' + veggies);
      } else if (veggies.indexOf(veggie) > -1) {
    		console.log(veggie + ' already exists in the veggies collection.');
    	}
    }
    
    let veggies = ['potato', 'tomato', 'chillies', 'green-pepper'];
    updateVegetablesCollection(veggies, 'spinach'); 
    // New veggies collection is : potato,tomato,chillies,green-pepper,spinach
    updateVegetablesCollection(veggies, 'spinach'); 
    // spinach already exists in the veggies collection.
    

Array.prototype.join

1. 语法

DANGER

arr.join([separator])

参数:

  • separator:指定一个字符串来分隔数组的每个元素,默认为 ,

返回值:

一个所有数组元素连接的字符串,如果 arr.length 为0,则返回空字符串。

2. 描述

描述即返回值。

个人在日常开发中常用场景:

  • 字符串拆分重组。

3. 示例

  • joining an array four different ways

    const a = ['Wind', 'Water', 'Fire'];
    a.join(); // 'Wind,Water,Fire'
    a.join(', '); // 'Wind, Water, Fire'
    a.join(' + '); // 'Wind + Water + Fire'
    a.join(''); // 'WindWaterFire'
    
  • joining an array-like object

    function f(a, b, c) {
      return Array.prototype.join.call(arguments);
    }
    f(1, 'a', true); // '1,a,true'
    

Array.prototype.lastIndexOf

indexOf 的反向行为,不做描述。

Array.prototype.slice

1. 语法

DANGER

arr.slice([begin[, end]])

参数:

  • begin:提取起始处的索引,默认为 0;
  • end:提取终止处的索引,默认为 length-1。

返回值:

一个含有被提取元素的新数组。

2. 描述

slice 不会修改原数组,只会返回一个浅拷贝的新数组。

个人在日常开发中常用场景:

  • 截取内容。

3. 示例

const fruits = ['Banana', 'Orange', 'Lemon', 'Apple', 'Mango'];
fruits.slice(1, 3); // ['Orange','Lemon']

Array.prototype.toString

1. 语法

DANGER

arr.toString()

返回值:

一个表示指定的数组及元素的字符串。

2. 描述

Array 对象覆盖了 Object 的 toString 方法,当一个数组被作为文本值或者进行字符串连接操作时,将会自动调用其 toString 方法。

个人在日常开发中常用场景:

  • 常用于数组转为字符串。

3. 示例

const array = [1, 2, 'a', '1a'];
arrar.toString(); // "1,2,a,1a"

Array.prototype.toLocaleString

1. 语法

DANGER

arr.toLocaleString([locales[,options]])

参数:

  • locales:带有 BCP 47 语言标记的字符串或字符串数组;
  • options:一个可配置属性的对象。

返回值:

表示数组元素的字符串。

2. 描述

toLocaleString 返回一个字符串表示数组中的元素。数组中的元素将使用各自的 toLocaleString 方法转为字符串,这些字符串将使用一个特定语言环境的字符串隔开。

个人在日常开发中常用场景:

  • 早期使用过该方法将时间转换为本地时间,后来使用 dayjs,moment 等时间库替代了。

3. 示例

// Object:Object.prototype.toLocaleString()
// Number:Number.prototype.toLocaleString()
// Date:Date.prototype.toLocaleString()

let prices = ['¥7', 500, 8123, 12]; 
prices.toLocaleString('ja-JP', { style: 'currency', currency: 'JPY' }); // "¥7,¥500,¥8,123,¥12"

数组的克隆

  • 使用ES6的扩展运算符 ...

  • 真正的克隆:返回一个新数组

let aarr = [1,2,3,4];
let barr =[...aarr];

barr.push(666);

console.log(aarr,barr);