JavaScript基础第六天

JavaScript 基础第六天

今天我们学习数组的遍历,以及数组的其他用法。

1. 数组遍历

1.1. 古老方法

可以使用 for 循环进行遍历。

let arr = ["a", "b", "d", "g"];
for (let i = 0; i < arr.length; i++) {console.log(arr[i]);
}

1.2. forEach

forEach的两个参数,

  • item 是当前循环的项。
  • index 是当前下标。
let arr = ["a", "b", "d", "g"];
arr.forEach((item, index) => {console.log(`${item}-${index}`);item = "c";
});
console.log(arr);

image-20240207212445613

forEach 循环,对原数组没有影响,没有返回值

1.3. map 映射

mapforEach 一样接受一个函数作为参数,但map 有返回值,会返回一个数组,返回数组中的值与接受的函数返回的值相关,并不会改变原来的数组。

let arr = [1, 2, 3, 4, 5];
// double将原数组的每一项,都变成两倍
const double = (arr) =>arr.map((item) => {return item * 2;});
const newArr = double(arr);
console.log(newArr); // [2, 4, 6, 8, 10]
console.log(arr); // 原始数组不变[1, 2, 3, 4, 5]

1.4. some

some 只要数组中有一项满足条件,就输出 true:否则输出 false。

let arr = [1, 2, 3, 4, 5];
const res1 = arr.some((item) => {return item > 3;
});
const res2 = arr.some((item) => {return item < 0;
});
console.log(res1); //  true
console.log(res2); //  false

1.5. every

every 数组中的每一项都满足条件,返回 true, 否则返回 false。

let arr = [1, 2, 3, 4, 5];
const res1 = arr.every((item) => {return item > 0;
});
const res2 = arr.every((item) => {return item > 3;
});
console.log(res1); //true
console.log(res2); //false

1.6. findIndex

findIndex 找到符合条件的就返回下标,没有就返回-1。

const arr = [1,2,3,{name: "钱多多",},
];
const index = arr.findIndex((item) => {return item.name === "钱多多";
});
console.log(index); //3

1.7. find

find 返回第一个匹配的元素, 如果没有找到,返回 undefined。

const arr = [1,2,3,{name: "钱多多",},
];
const target = arr.find((item) => {return item.name === "钱多多";
});
console.log(target);

1.8. filter

filter 过滤返回符合条件的数组,不会改变原数组。

const nums = [1, 2, 3, 4, 5, 6];
const numBig = nums.filter((num) => {return num > 3;
});
console.log(numBig); // [4, 5, 6]

2. 数组的其他用法

2.1. 翻转数组 reverse

reverse 翻转数组,会改变原来的数组,也会返回一个新数组,都是翻转之后的。

let arr = ["a", "b", "c"];
const reverseArr = arr.reverse();
console.log(arr); // 输出:["c", "b", "a"]
console.log(reverseArr); // 输出:["c", "b", "a"]

2.2. 数组转字符串 join

join 可以将数组转为字符串,可以传入参数,分隔符。

let arr = ["html", "css", "js"]; // 'html,css,js'
const str1 = arr.join(",");
const str2 = arr.join("/");
console.log(str1); //	html,css,js
console.log(str2); // html/css/js

2.3. 数组排序 sort

sort 会改变原来的数组,也会返回一个新数组,都是排序之后的。

接受一个函数作为参数,函数有返回值, 且有两个参数,返回第一个参数-第二个参数为升序,反之为降序。

let arr = [1, 4, 5, 3, 2];
arr3.sort((a, b) => {//升序return a - b;
});
console.log(arr); //[1,2,3,4,5]
//降序
const res = arr.sort((a, b) => {return b - a;
});
console.log(arr); //[5,4,3,2,1]

2.4. 求和 reduce

reduce(pre,cur)

  • pre 第一个参数是累加器
  • cur 第二个参数是我们最后的返回的结果
let arr1 = [1, 2, 3, 4, 5];
const sum1 = arr1.reduce((pre, cur) => {return pre + cur;
}, 0);
console.log(sum1); //15
let arr1 = [1, 2, 3, 4, 5];
const sum1 = arr1.reduce((pre, cur) => {return pre + cur;
}, 0);
console.log(sum1); //15

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/461356.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

火星文:网络时代下的语言

引言 在互联网时代&#xff0c;网络语言的发展日新月异。火星文作为一种特殊的网络表达方式&#xff0c;近年来逐渐兴起并成为了网络文化的一部分。 火星文生成器 | 一个覆盖广泛主题工具的高效在线平台(amd794.com) https://amd794.com/huoxingwen 火星文的兴起时代 火星…

了解物联网漏洞与家庭网络入侵之间的联系

我们的家庭正日益成为一个由互连设备组成的网络。从智能恒温器到联网冰箱&#xff0c;物联网 (IoT) 彻底改变了我们与家庭环境互动的方式。 随着技术进步带来了新的挑战&#xff1a;这些设备容易受到网络威胁以及随之而来的家庭网络入侵风险。 在这篇博文中&#xff0c;我们将…

JCIM | MD揭示PTP1B磷酸酶激活RtcB连接酶的机制

Background 内质网应激反应&#xff08;UPR&#xff09; 中的一个重要过程。UPR是由内质网中的三种跨膜传感器&#xff08;IRE1、PERK和ATF6&#xff09;控制的细胞应激反应&#xff0c;当内质网中的蛋白质折叠能力受到压力时&#xff0c;UPR通过减少蛋白质合成和增加未折叠或错…

基础图算法与社交网络分析

目录 前言1 寻找最短路径的Dijkstra算法1.1 介绍1.2 算法步骤1.3 应用领域1.4 算法优势与限制 2 构建高效网络结构的最小生成树算法2.1 Kruskal算法2.2 应用领域2.3 算法优势与限制 3 中心度算法3.1 PageRank算法3.2 Degree Centrality&#xff08;度中心度&#xff09;3.3 Bet…

项目02《游戏-12-开发》Unity3D

基于 项目02《游戏-11-开发》Unity3D &#xff0c; 任务&#xff1a;实现场景怪物自动巡航 &#xff0c; 首先在场景中创建小球命名为路径点WayPoint0&#xff0c; 取消小球的碰撞器Collider&#xff0c; 再复制两个改名为WayPoint1 和 WayPoint2 &#xff0c; 在…

Kubernetes基础(十五)-k8s网络通信

1 k8s网络类型 2 Pod网络 2.1 同一pod内不同容器通信 Pod是Kubernetes中最小的可部署单元&#xff0c;它是一个或多个紧密关联的容器的组合&#xff0c;这些容器共享同一个网络命名空间和存储卷&#xff0c;因此Pod中的所有容器都共享相同的网络命名空间和IP地址——PodIP&a…

LabVIEW网络测控系统

LabVIEW网络测控系统 介绍了基于LabVIEW的网络测控系统的开发与应用&#xff0c;通过网络技术实现了远程的数据采集、监控和控制。系统采用LabVIEW软件与网络通信技术相结合&#xff0c;提高了系统的灵活性和扩展性&#xff0c;适用于各种工业和科研领域的远程测控需求。 随着…

《动手学深度学习(PyTorch版)》笔记7.6

注&#xff1a;书中对代码的讲解并不详细&#xff0c;本文对很多细节做了详细注释。另外&#xff0c;书上的源代码是在Jupyter Notebook上运行的&#xff0c;较为分散&#xff0c;本文将代码集中起来&#xff0c;并加以完善&#xff0c;全部用vscode在python 3.9.18下测试通过&…

问题:金属电化学反应的实质是氧化还原反应,被腐蚀金属发生还原反应( ) #知识分享#知识分享#媒体

问题&#xff1a;金属电化学反应的实质是氧化还原反应&#xff0c;被腐蚀金属发生还原反应(  ) A、正确 B、错误 参考答案如图所示

LeetCode-第28题-找出字符串中第一个匹配项的下标

1.题目描述 给你两个字符串 haystack 和 needle &#xff0c;请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标&#xff08;下标从 0 开始&#xff09;。如果 needle 不是 haystack 的一部分&#xff0c;则返回 -1 。 2.样例描述 3.思路描述 可以让字符串 …

【Java 数据结构】Lambda表达式

Lambda表达式 1 背景1.1 Lambda表达式的语法1.2 函数式接口 2 Lambda表达式的基本使用2.1 语法精简 3 变量捕获3.1 匿名内部类3.2 匿名内部类的变量捕获3.3 Lambda的变量捕获 4 Lambda在集合当中的使用4.1 Collection接口4.2 List接口4.3 Map接口 5 总结 1 背景 Lambda表达式是…

js手写Promise(下)

目录 resolve与reject的调用时机封装优化 回调返回PromiseisPromise手动调用then 微队列catchresolverejectall传入的序列为空传入的值非Promise race完整的Promise代码 如果没有看过上半部分的铁铁可以看看这篇文章 js手写Promise&#xff08;上&#xff09; resolve与reject…