JavaScript学习总结笔记之数组、类数组

前言
JavaScript总结笔记篇仅是记载本人学习过程中的一些总结,为了梳理一下知识点,督促自己不断加强学习。文中有些是源自官网,有些是搜集资料,有些是个人观点,难免存在某些知识点疏漏或者是有错误的地方,如果错误之处,希望看到的小伙伴能及时提个醒,避免误导其他小伙伴,也希望我的总结能帮助到正在学或者是将要学习JavaScript的小伙伴们!大家一起努力,早日成为IT界的大神!

一、数组

(一)创建方法
1.var arr = [1,2,3,4,5];
2.var arr = new Array(); //系统自带的

数组的所有方法全来源于Array.prototype

Ps:var arr = new Array(10);  //长度为10的空数组  undefined× 10
     var arr1 = [10]; //数组的值为10
        // 一旦经历了var的操作,所得出的属性,window的属性,
        // 这种属性叫做不可配置的属性。不可配置的属性delete不掉
        var num = 123;
        window.num; //123
        delete num; //false
        
        var num = {
            name : "xu" 
        }
        num.name; //"xu"
        delete name; //true

        // 数组去重
        // 数组的每一个位当做对象的属性名(利用对象的属性名都是唯一的)
        var arr = [1, 2, 2, 3, 3, 3, 2, 0, 0];
        Array.prototype.unique = function () {
            var temp = {},
                arr = [],
                len = this.length;
            for (var i = 0; i < len; i++) {
                if (!temp[this[i]]) {
                    temp[this[i]] = "abc";
                    arr.push(this[i]);
                }
            }
            return arr;
        }

(二)方法

改变原数组:push、unshift、pop、shift、reverse、splice、sort
不改变原数组:concat、join、split、toString、slice

(三)改变原数组
1.push
       //在原型链上写一个push方法
       var arr = [];
       Array.prototype.push = function () {
             for(var i = 0; i < arguments.length; i ++){
                 this[this.length] = arguments[i];
             }
             return this.length;
       }
2.unshift 在最前面插入
3.pop 最后一位剪切出来
4.shift 在最前面减
5.reverse
6.splice (从第几位开始,截取多少的长度,在接口处添加新的数据)
        var arr = [1,2,3,5];
        arr.splice(3,0,4); //结果返回[1,2,3,4,5]
arr.splice(-1, 0); 
        // -1表示倒数第一位,-1 + 4 = 3,数组有4位,索引为3表示倒数第一位
7.sort 排序方法
// 1.必须写两参数
        // 2.看返回值 1)当返回值为负数时,那么前面的数放在前面
        //           2) 为正数,那么后面的数在前
        //           3)为0,不动

        var arr = [23,34,56,12,2,4,78];

        arr.sort(
            function (a, b) {
                // return a - b; 升序
                // return b - a; 降序
            }
        )

        //给一个有序的数组,乱序
        var arr = [1,2,3,4,5,6,7];
        arr.sort(
            function () {
                return Math.random() - 0.5;
            }
        )
        // 用sort给数组根据ASCII码排序
        function retBytes (str) {
            var num = str.length;
            for (var i = 0; i < num; i++) {
                if (str.charCodeAt(i) > 255) {
                    num ++;
                }
            }
            return num;
        }
        
        var arr = ["afad哈哈哈", "安居房拉风aaaaa", "嘿嘿", "hjhfajhf", "afaaaaaaaaa"];
        arr.sort(function (a, b) {
            return retBytes(a) - retBytes(b);
        })

(四)改变原数组
1.concat 拼接功能
a.concat(b);  //将b拼接到a上
2.toString();
var a = ['a','b'];
a.toString(); //a : 'a,b'
3.join();
var a = ['a','b','c','d'];
a.join("-"); //'a-b-c-d'
var arr =1,2,3,4】;
var newArr = arr.slice(1,3);//[2,3]
slice(从该位开始截取,截取到该位(不包含该位))

var arr =1,2,3,4】;
var newArr = arr.slice(1);//[2,3,4]
slice(从第几位开始截取,截取到最后)
var arr =1,2,3,4】;
var newArr = arr.slice();//[1,2,3,4]
slice(全部截取)
Ps:string当中有一个方法split(),与数组中的join()方法互逆
var str = [1,2,3,4,5,6];
str.join("-");  //'1-2-3-4-5-6' 
str.join(); // '1,2,3,4,5,6'

var str = "hi  nice too me you";
str.split("-"); //   ["hi  nice too me you"]
str.split(" ", 3); // ["hi", "nice", "too"]
简单问题:如何把多个数组拼接在一起
var str = ?;
var str1 = ?;
var str2 = ?;
var str3 = ?;
//散列
var arr = [str,str1,str2,str3];
arr.join("");

二、类数组

1.可以利用属性名模拟数组的特征
2.可以动态的增长length属性
3.如果强行让类数组调用push方法,则会根据length属性值的位置进行属性的扩充。
/类数组
var obj = {
"0" : 'a',
"1" : 'b',
"2" : 'c',
"length" : 3, //类数组必须加length
"push" : Array.prototype.push,
"splice" : Array.prototype.splice
//splice将值转化为数组 ["a","b","c"]
}
//索引要为索引(数字)属性,必须有length属性,最好加上push
        var obj = {
            "2" : "a",
            "3" : "b",
            "length" : 2,
            "push" : Array.prototype.push
        }

        obj.push('c');
        obj.push('d');

        // obj = ?
        //  var obj = {
        //     "2" : "c",
        //     "3" : "d",
        //     "length" : 4,
        //     "push" : Array.prototype.push
        // }

        // push内部原理
        // Array.prototype.push = function (target) {
        //     obj[obj.length] = target;
        //     obj.length ++;
        // }
    

文章持续更新中,敬请关注,谢谢阅读!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值