从零开始学 Web 之 JavaScript(四)数组

简介: 大家好,这里是「 Daotin的梦呓 」从零开始学 Web 系列教程。此文首发于「 Daotin的梦呓 」公众号,欢迎大家订阅关注。在这里我会从 Web 前端零基础开始,一步步学习 Web 相关的知识点,期间也会分享一些好玩的项目。

大家好,这里是「 Daotin的梦呓 」从零开始学 Web 系列教程。此文首发于「 Daotin的梦呓 」公众号,欢迎大家订阅关注。在这里我会从 Web 前端零基础开始,一步步学习 Web 相关的知识点,期间也会分享一些好玩的项目。现在就让我们一起进入 Web 前端学习的冒险之旅吧!

img_25336e0b5504f9a5b326090f41d9dcd7.png

一、数组

1、数组定义

  1. 通过字面量定义数组var arr = [10,20,30];
  2. 通过构造函数定义数组var arr = new Array(参数); // 参数位置为一个数值时为数组长度,多个数值时为数组中的元素。如果没有参数的时候 Array后面的括号可以省略。

2、数组操作

  1. 数组长度: 数组名.length;

问:数组中存储的数据类型一定是一样的吗?

类型可以不一样。

问:数组的长度是不是可以改变呢?

可以改变。

3、数组高级API

3.1、判断数组和转换数组

instanceof // 是一个关键字,判断A是否是B类型:A instanceof B。
isArray()    //HTML5中新增 ,判断是不是数组
toString()    //把数组转换成字符串,每一项用,分割
valueOf()    //返回数组对象本身
join(变量)    //根据每个字符把数组元素连起来变成字符串,变量可以有可以没有。不写变量默认用逗号分隔,无缝连接用空字符串。

instanceof

var str1 = new String("abc");
var str2 = "abc";
console.log(str1 instanceof String); // true
console.log(str2 instanceof String); // false str2不是String对象

join

//join是把数组元素用特殊方式链接成字符串(参数决定用什么链接,无参默认用逗号链接)
var arr = ["关羽","张飞","刘备"];
var str1 = arr.join();
var str2 = arr.join(" ");//如果用空格的话,那么元素之间会有一个空格
var str3 = arr.join("");//用空字符串,链接元素,无缝连接
var str4 = arr.join("&");
console.log(str1);
console.log(str2);
console.log(str3);
console.log(str4);

arguements

只在函数中使用,代表传入实参的数组。

arguements 是伪数组:不能修改长短的数组。(可以修改元素,但是不能变长变短)

fn(1,2);
fn(1,2,3);
fn(1,2,3,4,5);
function fn(a,b){
    //只在函数中使用,实参的数组。
    arguments[0] = 0; // 可以修改内容
    console.log(arguments);
    //伪数组:不能修改长短的数组。(可以修改元素,但是不能变长变短)
    arguments.push(1);  // arguments 伪数组没有push方法
    console.log(arguments instanceof Array); // false

    //形参个数
    console.log(fn.length);
    //实参个数
    console.log(arguments.length);
    // 形参和实参个数可以不同,因为实参传入的时候可以形参的个数不一样。

    // arguments.callee相当于函数名,这里打印整个函数。
    console.log(arguments.callee);
}

3.2、数组增删和换位置(原数组将被修改)

push() //在数组最后面插入项,返回数组的长度
//数组1改后的长度 = 数组1.push(元素1);

pop() //取出数组中的最后一项,返回最后一项
//被删除的元素 = 数组1.pop();

unshift() //在数组最前面插入项,返回数组的长度
//数组1改后的长度 = 数组1.unshift(元素1);

shift() //取出数组中的第一个元素,返回第一项
//被删除的元素 = 数组1.shift();

reverse()    //翻转数组(原数组讲被反转,返回值也是被反转后的数组)
//反转后的数组 = 数组1.reverse();

sort(); //给数组排序,返回排序后的数组。如何排序看参数。
//从小到大排序后的数组 = 数组1.sort(function(a,b){
// return a-b;
//});

sort

var arr2 = [7,6,15,4,13,2,1];
console.log(arr2); // 7,6,15,4,13,2,1
console.log(arr2.sort()); // 1,13,15,2,4,6,7

问题:只能通过第一位字母或数字的 unicode 编码进行排列。

解决:sort方法不稳定,设计的时候就是这么设计的,可以通过回调函数进行规则设置。

console.log(arr2);
console.log(arr2.sort(function (a,b) {
    return a-b;   //升序   //b-a:降序
}));

4、迭代方法

作用:代替 for 循环。

every

every() 他的返回值是一个 boolean 类型值。而参数是一个回调函数。
参数有三个。名字随便起,但是表示的意思还是这样顺序的。

var arr = ["关长","张飞","赵子龙","马超","黄忠"];

// function (element,index,array)
// element:数组元素的值
// index:索引
// array:调用这个方法的整个数组对象(一般不用)

arr.every(function(fff,www,ggg) {
    console.log(fff);
    console.log(www); 
    console.log(ggg);
    return true;
}); 
// 关长
// 0
// ["关长", "张飞", "赵龙", "马超", "黄忠"]
// 张飞
// 1
// ["关长", "张飞", "赵龙", "马超", "黄忠"]
// 赵龙
// 2
// ["关长", "张飞", "赵龙", "马超", "黄忠"]
// 马超
// 3
// ["关长", "张飞", "赵龙", "马超", "黄忠"]
// 黄忠
// 4
// ["关长", "张飞", "赵龙", "马超", "黄忠"]
var arr = ["青花瓷", "一路向北", "轨迹"];
    var flag = arr.every(function (ele, index) { // 只要有一个没满足条件,就返回false
     ele.length > 2;
}); 

console.log(flag); // false

filter

filter 返回值是一个新数组。return 为 true 的数组。

var arr = ["关长","张飞","赵子龙","马超","黄忠"];
var arr1 = arr.filter(function (ele,index,array) {
    if(ele.length>2){
      return true;
    }
    return false;
});

console.log(arr1); // ["赵子龙"]    

foreach

foreach 遍历数组(无返回值,纯操作数组中的元素)

var arr = ["关长","张飞","赵子龙","马超","黄忠"];
var str = "";
arr.forEach(function (ele,index,array) {
    str+=ele;
});
console.log(str); // 关长张飞赵子龙马超黄忠

map

map有返回值,返回什么都添加到新数组中。

var arr = ["关长","张飞","赵子龙","马超","黄忠"];
var arr2 = arr.map(function (ele,index,array) {
    return ele+"你好";
})

console.log(arr2); // (5) ["关长你好", "张飞你好", "赵子龙你好", "马超你好", "黄忠你好"]

some

some有返回值,如果函数结果有一个是true,那么some方法结果也是true。

var arr = ["关长","张飞","赵子龙","马超","黄忠"];
var flag = arr.some(function (ele,index,array) {
    if(ele.length>2){
        return true;
    }
    return false;
})

console.log(flag); // true    

push

向数组的末尾添加一个或更多元素,并返回新的长度。

注意: 新元素将添加在数组的末尾。

注意: 此方法改变数组的长度。

提示: 在数组起始位置添加元素请使用 unshift() 方法。

pop

删除数组的最后一个元素并返回删除的元素。

注意:此方法改变数组的长度!

提示: 移除数组第一个元素,请使用 shift() 方法。

了解方法

concat() //把参数拼接到当前数组
//新数组 = 数组1.concat(数组2);

slice() //从当前数组中截取一个新的数组,不影响原来的数组,参数start从0开始,end从1开始
//新数组 = 数组1.slice(索引1,索引2);

splice()//删除或替换当前数组的某些项目,参数start,deleteCount,options(要替换的项目)
//新数组 = 数组1.splice(起始索引,结束索引,替换内容);

indexOf()、lastIndexOf() //如果没找到返回-1
//索引值 = 数组.indexOf/lastIndexOf(数组中的元素);

forEach() // 数组每个元素都执行一次回调函数。

5、清空数组

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

// 方法一:删除数组中所有项目 
array.splice(0,array.length); 

// 方法二:length属性可以赋值,其它语言中length是只读
array.length = 0;

// 方法三:
array = []; //推荐

img_25336e0b5504f9a5b326090f41d9dcd7.png

img_964e5550b9dc423fcb4297d85f09ac10.png

目录
相关文章
|
3月前
|
前端开发 JavaScript 开发者
JavaScript:无处不在的Web语言
JavaScript:无处不在的Web语言
|
3月前
|
前端开发 JavaScript 开发者
JavaScript:构建动态Web的核心力量
JavaScript:构建动态Web的核心力量
|
3月前
|
JavaScript 前端开发 开发者
JavaScript:驱动现代Web的核心引擎
JavaScript:驱动现代Web的核心引擎
|
7月前
|
前端开发 算法 API
构建高性能图像处理Web应用:Next.js与TailwindCSS实践
本文分享了构建在线图像黑白转换工具的技术实践,涵盖技术栈选择、架构设计与性能优化。项目采用Next.js提供优秀的SSR性能和SEO支持,TailwindCSS加速UI开发,WebAssembly实现高性能图像处理算法。通过渐进式处理、WebWorker隔离及内存管理等策略,解决大图像处理性能瓶颈,并确保跨浏览器兼容性和移动设备优化。实际应用案例展示了其即时处理、高质量输出和客户端隐私保护等特点。未来计划引入WebGPU加速、AI增强等功能,进一步提升用户体验。此技术栈为Web图像处理应用提供了高效可行的解决方案。
|
3月前
|
JavaScript 前端开发 物联网
JavaScript:驱动现代Web的核心引擎
JavaScript:驱动现代Web的核心引擎
|
6月前
|
JSON JavaScript 前端开发
JavaScript入门干货:蓝桥杯Web组分章学习笔记(基于蓝桥云课《JavaScript基础入门》)
这是一份详尽的JavaScript学习笔记,涵盖基础到进阶内容。包括变量、运算符、数组、字符串操作,DOM/BOM事件处理,内置对象(如Array、Date、Math)用法,JSON格式解析,以及函数作用域与闭包等核心概念。同时深入探讨值类型和引用类型的差异、异常处理机制,并介绍函数高级特性如call/apply/bind方法、递归及arguments对象。代码按章节分点整理,注释细致,适合初学者系统掌握JavaScript编程知识。
122 2
|
10月前
|
前端开发
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
296 1
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
|
9月前
|
JavaScript 前端开发 API
JavaScript中通过array.map()实现数据转换、创建派生数组、异步数据流处理、复杂API请求、DOM操作、搜索和过滤等,array.map()的使用详解(附实际应用代码)
array.map()可以用来数据转换、创建派生数组、应用函数、链式调用、异步数据流处理、复杂API请求梳理、提供DOM操作、用来搜索和过滤等,比for好用太多了,主要是写法简单,并且非常直观,并且能提升代码的可读性,也就提升了Long Term代码的可维护性。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
JavaScript
使用Node.js创建一个简单的Web服务器
使用Node.js创建一个简单的Web服务器
|
9月前
|
数据采集 JavaScript 前端开发
JavaScript中通过array.filter()实现数组的数据筛选、数据清洗和链式调用,JS中数组过滤器的使用详解(附实际应用代码)
用array.filter()来实现数据筛选、数据清洗和链式调用,相对于for循环更加清晰,语义化强,能显著提升代码的可读性和可维护性。博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~