Array对象

  • concat()
示例:
var demoArray = ['a', 'b', 'c'];
var demoArray2 = demoArray.concat('e');
console.log(demoArray); // => demoArray:['a','b','c']  原数组不发生变更
console.log(demoArray2); // => ['a','b','c','e']
  • indexOf() :

在数组中查找匹配元素。若不存在匹配的元素时,就返回-1。查找的时候使用"==="运算符,所以要区分1和'1'


示例:
['a', 'b', 'c'].indexOf('a'); // =>0
['a', 'b', 'c'].indexOf('a', 1); // =>-1
['a', 'b', 'c'].indexOf('d'); // =>-1
[1, 2, 3].indexOf('1'); // => -1 :采用的'==='匹配方式
  • join() :

将数组中所有元素通过一个分隔符拼接为一个字符串

示例:
['a', 'b', 'c'].join(); // => 'a,b,c'
['a', 'b', 'c'].join('-'); // => 'a-b-c'
  • slice(startIndex,endIndex) :

返回数组的一部分

示例:
[1, 2, 3, 4, 5, 6].slice(); // => [1, 2, 3, 4, 5, 6]
[1, 2, 3, 4, 5, 6].slice(1); // => [2, 3, 4, 5, 6] :从序号1开始截取
[1, 2, 3, 4, 5, 6].slice(0, 4); // => [1, 2, 3, 4] :截取序号0到序号3(序号4的前一个)的元素
[1, 2, 3, 4, 5, 6].slice(-2); // => [5, 6] :截取后面的2个元素
  • sort(opt_orderFunc) :

按一定的规则进行排序


示例:
[1, 3, 5, 2, 4, 11, 22].sort(); 
// => [1, 11, 2, 22, 3, 4, 5] :这里都元素都被转换为字符,11的字符在2前

[1, 3, 5, 2, 4, 11, 22].sort(function (v1, v2) {
    return v1 - v2;
}); 
// => [1, 2, 3, 4, 5, 11, 22] :从小到大排序

[1, 3, 5, 2, 4, 11, 22].sort(function (v1, v2) {
    return -(v1 - v2); //取反,就可以转换为 从大到小
}); 
// => [22, 11, 5, 4, 3, 2, 1]
  • 包含includes()
// 参数1:包含的指定值
console.log([1, 2, 3].includes(1));    // true

// 参数2:可选,搜索的起始索引,默认为0
console.log([1, 2, 3].includes(1, 2)); // false

// NaN 的包含判断
console.log([1, NaN, 3].includes(NaN)); // true
  • 扩展运算符...
let arr = [1, 2],
    arr1 = [...arr];
console.log(arr1); // [1, 2]

// 数组含空位
let arr2 = [1, , 3],
    arr3 = [...arr2];
console.log(arr3); [1, undefined, 3]
  • toString() :

将数组中所有元素通过一个英文逗号','拼接为一个字符串

示例:
[1, 2, 3, 4, 5].toString(); // => '1,2,3,4,5'
['a', 'b', 'c', 'd', 'e'].toString(); // => 'a,b,c,d,e'

静态方法

  • Array.isArray() :

判断对象是否为数组

示例:
Array.isArray([]); // => true
Array.isArray(['a', 'b', 'c']); // => true
Array.isArray('a'); // => false
Array.isArray('[1, 2, 3]'); // => false
  • 浅拷贝
说明:Array类型是一种引用类型;当数组a复制给数组b时,对数组b进行元素修改,数组a也会发生修改。

示例:
var demoArrayA = ['a', 'b', 'c', 'd', 'e'];
var demoArrayB = demoArrayA; // 把数组A 赋值给数组B
demoArrayB[0] = 1; // 对数组B 的元素进行修改
console.log(demoArrayA); // => [1, 'b', 'c', 'd', 'e']:数组A 的元素也发生了变更
  • 深拷贝
说明:使用concat()方法,返回新的数组;防止浅度复制的情况发生,对数组b进行元素修改操作,数组a不发生变更。

示例:

var demoArrayA = ['a', 'b', 'c', 'd', 'e'];
var demoArrayB = demoArrayA.concat(); // 使用concat()方法,返回新的数组
demoArrayB[0] = 1; // 对数组B 的元素进行修改
console.log(demoArrayA); // => ['a', 'b', 'c', 'd', 'e']:数组A 的元素没变更
console.log(demoArrayB); // => [  1, 'b', 'c', 'd', 'e']:数组B 的元素发生了变更
  • 判断2个数组是否相等
说明:Array数组为引用类型,所以哪怕 []===[] 都会返回false,所以可通过数组toString()方法返回的字符串判断是否相等。

示例:
console.log([]===[]); // => false
console.log(['a', 'b'] === ['a', 'b']); // => false
console.log(['a', 'b'].toString() === ['a', 'b'].toString()); // true

数组去重

var arr = [1, 1, 1, 2, 2, 1, 3, 1, 3, 4, 5, 6];

function arrDel(arr) 
{

    var result = [],

        obj = {};

    for (var i in arr) 
    {
        //判断对象的属性
        if (!obj[arr[i]]) 
        {
            result.push(arr[i]);

            obj[arr[i]] = 1;
        }
    }
    return result;
}

console.log(arrDel(arr));

判断一个字符串中出现次数最多的字符,统计这个次数

var str = 'addddfffssdfsadfsdfsafjsd';

var json = {}; //定义对象来存放 对象属性的值

//遍历字符串,将重复出现的字符 累加

for (var i = 0; i < str.length; i++) 
{
    if (!json[str.charAt(i)]) 
    {

        json[str.charAt(i)] = 1;

    } else {

        json[str.charAt(i)]++;

    }

}

var iMax = 0;

var icur = '';

console.log(json);//{a:3,d:8,f:7,s:6,j:1}

//遍历 json对象取最大值

for (var val in json) 
{

    if (json[val] > iMax) 
    {

        iMax = json[val];
        icur = val;
    }

}

console.log('出现最多的字符:' + icur, '出现次数:' + iMax);

数组求和

function sum(arr) 
{

    var sum = 0;

    arr.forEach(function (value) {

        sum += value;

    });

    return sum;

}

var arr = [1, 2, 3, 4];

console.log(sum(arr));
powered by GitbookEdit Time: 2023-04-08 10:28:32