资讯专栏INFORMATION COLUMN

javescript经验文档(Array篇)

XFLY / 2622人阅读

摘要:返回结果注意方法返回的是数组长度,如上示例,返回值为方法把一个或多个参数插入到数组头部,返回数组长度。整数,规定添加删除项目的位置,使用负数可从数组结尾处规定位置。返回值类型描述包含被删除项目的新数组,如果有的话。

数组去重 ...set(array)去重
{
    let array = ["aa",12,"aa",16,12,"ab"];
    function dedupe(array) { //es6
        return [...new Set(array)] 
    }
    dedupe(array);
    //等价于
    Array.from(new Set(array));
}
array.filter()方法去重
{
    let array = ["aa",12,"aa",16,12,"ab"];
    array.filter((item, index) => {
        return array.indexOf(item) == index;
    });
}
数组翻转

reverse()

{
    let arr = ["a","b","c",1,3];
    arr.reverse(); 
}

返回结果: [3, 1, "c", "b", "a"]

连接两个或多个数组 concat() 方法

concat() 方法用于连接两个或多个数组,该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本
arr0.concat(arr1, arr2, arr3, ......, arrx);
例:

{
    [1,2,3].concat(4,5)
    
    [1,2,3].concat([4,5],6)
    
    [1,2,3].concat([4,5],[6,7,8])
}

返回结果:
[1, 2, 3, 4, 5]
[1, 2, 3, 4, 5, 6]
[1, 2, 3, 4, 5, 6, 7, 8]

... 方法

es6 扩展运算符,最简单的写法,一万个推荐!!!

{
    let arr = ["1s","2s","3s",4];
    let arr2 = ["1a","2a"];
    console.log([...arr,...arr2]);
}

返回结果:["1s", "2s", "3s", 4, "1a", "2a"]

push() 方法

push()把一个或多个参数附加在数组末尾,返回数组长度。改变数组自身。

{
    let a = ["a","b","v"];
    let b = ["c","d","g"];
    a.push(...b)
    console.log(a)
}

返回结果:["a", "b", "v", "c", "d", "g"]
注意: push()方法返回的是数组长度,如上示例,console.log(a.push(...b))返回值为6

unshift() 方法

unshift()把一个或多个参数插入到数组头部,返回数组长度。改变数组自身。

{
    let arr = [1, 2, 3];
    let count = arr.unshift(4, 5);

    console.log(count); 
    console.log(arr); 
}

返回结果:
5
[4, 5, 1, 2, 3]

数组与字符串相互转化 数组转字符串

join()方法,Array.join(标识符)

{
    ["as2",12,"ss"].join("/");
}

返回结果:"as2/12/ss"

字符串转数组

split()方法,string.split(标识符)

{
    "as2/12/ss".split("/")
}

返回结果:["as2", "12", "ss"]

数组删除、插入、替换

arrayObject.splice(index,howmany,item1,.....,itemX)

参数描述:
index:必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。
howmany:必需。要删除的项目数量。如果设置为 0,则不会删除项目。
item1, ..., itemX 可选。向数组添加的新项目。
返回值:
类型描述:Array 包含被删除项目的新数组,如果有的话。
说明:splice() 方法可删除从 index 处开始的零个或多个元素,并且用参数列表中声明的一个或多个值来替换那些被删除的元素。

如果从 arrayObject 中删除了元素,则返回的是含有被删除的元素的数组。

splice插入操作

示例:在 aa 和 bb 之间插入 aabb

{
    let str = ["aa","bb",123,"sd13cx","jj",45];
    str.splice(1,0,"aabb");
    console.log(str)
}

返回结果:["aa", "aabb", "bb", 123, "sd13cx", "jj", 45]

拓展练习

在 aa 和 bb 之间批量插入 ab、aabb、aaabbb
{

let str = ["aa","bb",123,"sd13cx","jj",45];
str.splice(1,0,"ab","aabb","aaabbb");
console.log(str);

}
返回结果:["aa", "ab", "aabb", "aaabbb", "bb", 123, "sd13cx", "jj", 45]

深层拓展

es6方法,使用‘...’扩展运算符

{
    let str = ["aa","bb",123,"sd13cx","jj",45];
    let arr = ["ab","aabb","aaabbb"];
    //巧用es6 "..."
    str.splice(1,0,...arr);
    console.log(str);
}
splice替换操作

示例:把 123 替换为 ccdd

{
    let str = ["aa","bb",123,"sd13cx","jj",45];
    str.splice(2,1,"ccdd");
    console.log(str)
}

返回结果:["aa", "bb", "ccdd", "sd13cx", "jj", 45]

拓展练习

把 123 替换为 1234、12345

{
    let str = ["aa","bb",123,"sd13cx","jj",45];
    str.splice(2,1,1234,12345);
    console.log(str);
}

返回结果:["aa", "bb", 1234, 12345, "sd13cx", "jj", 45]

splice删除操作

示例:把 123 删除

{
    let str = ["aa","bb",123,"sd13cx","jj",45];
    str.splice(2,1);
    console.log(str)
}
delete删除操作
{
    let arr = ["aaa",111,222];
    delete arr[1]
    console.log(arr,arr.length)
    //delete 只删除值,不删除引用空间
}

返回结果:["aaa", empty, 222] 3

数组排序 冒泡排序
{
    let array = [1,4,-8,-3,6,12,9,8];
    let bubbleSort = function(arr){
        for(let i = 0;i < arr.length-1;i++){
            for(let j = 0;j < arr.length-i-1;j++){
                if(arr[j] < arr[j+1]){
                    let temp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = temp;
                }
            }
        }
        return arr;
    }
    bubbleSort(array);
}    

(1)比较相邻的元素。如果第一个比第二个大,就交换他们两个位置。
(2)对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
(3)针对所有的元素重复以上的步骤,除了最后一个。
(4)持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

快速排序排序
{
    //递归思想,两边快速的排序,冒泡排序的改进
    let array = [1,4,-8,-3,6,12,9,8];
    let quickSort = function(arr){
        if(arr.length <= 1){
            return arr;
        }
        let index = Math.floor(arr.length/2);
        let temp = arr.splice(index,1);
        let left = [],right = [];
        for(let item of arr){
            if(item < temp){
                left.push(item);
            }else{
                right.push(item);
            }
        }
        return quickSort(left).concat(temp,quickSort(right));
    }
    quickSort(array);
}

Math.floor(x)方法是向下取整,返回小于或等于x的最接近的整数。

splice(index,num,item)方法是向数组中添加项目,或是从数组中删除项目,并返回被删除的项目。

index是整数,被操作项目所在的位置(必须)
num是整数,要删除的项目的数量,如果为0,表示不删除(必须)
item是向数组中添加的新项目,可以是多个(可选)
push()方法是向数组末尾添加一个或多个新项目并返回新数组的长度

concat()方法连接两个或多个数组,不会改变原有数组,返回一个新数组

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/97013.html

相关文章

  • javescript经验文档(循环语句

    摘要:循环语句一般循环方法注意在使用遍历数组之前一定要判断数组是否已经定义用的方法遍历数组对对象操作为对象的键用的方法总结来说总是得到对像的或数组字符串的下标而和一样是直接得到值。所以,不能对象用循环循环 循环语句 一般for循环 { let array = [1,2,3,4,5,6,7]; for (let i = 0; i < array.length; i++) ...

    BearyChat 评论0 收藏0
  • javescript经验文档(es6/es2017

    摘要:迭代器西红柿孙双双结果西红柿孙双双生成器西红柿炒蛋结果西红柿孙双双模版字符串普通字符串多行字符串字符串中嵌入变量函数的参数默认值之前,当未传入参数时,操作符当被用于迭代器中时,它是一个操作符当被用于函数传参时,是一个操作符当被用于函 迭代器 - Iterators { use strict function chef(foods){ let i = 0;...

    fyber 评论0 收藏0
  • javescript经验文档(Object

    摘要:判断自身属性是否存在方法返回一个布尔值,判断对象是否包含特定的自身非继承属性。 判断自身属性是否存在 hasOwnProperty()方法返回一个布尔值,判断对象是否包含特定的自身(非继承)属性。 { let obj = {a:1,b:2}; obj.hasOwnProperty(a) } 返回结果:true

    developerworks 评论0 收藏0
  • javescript经验文档(技巧

    摘要:与用来赋值的奇怪用法如果存在,反之则相当于注意强烈要求注意一下,如果的值为,那么就要详细的考虑一下,因为千万不要玩脱了与判断奇偶隐式返回值注意一哈,这里是括号 && 与 || 用来赋值的奇怪用法 o_0 let a = x || y; // 如果 x 存在, a = x,反之则 a = y;相当于 if(x){ let a = x; ...

    jzman 评论0 收藏0
  • JavaScript中的数组

    摘要:数组数组概述数组是什么数组是值的有序集合数组中的每一个值叫做一个元素而每个元素在数组中都有一个唯一的位置这个位置用数字表示叫做索引数组用字符串表示叫做关联数组数组是无类型的数组的元素可以是任何类型例如字符串数字值布尔值等而且每个数组中的不同 数组 数组概述 数组是什么 数组是值的有序集合 数组中的每一个值叫做一个元素 而每个元素在数组中都有一个唯一的位置这个位置用数字表示 叫做索引数组...

    Genng 评论0 收藏0

发表评论

0条评论

XFLY

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<