首页 > 其他分享 >js:遍历数组

js:遍历数组

时间:2023-11-09 11:05:12浏览次数:30  
标签:index 遍历 console log array1 js length 数组 array

1.循环类型 forEach()

forEach();

语法
forEach(callbackFn)
forEach(callbackFn, thisArg)
例子
/**
 * 
 * @param {any} element 数组中正在处理的当前元素
 * @param {number} index 数组中正在处理的当前元素的索引。
 * @param {Array} array1 调用了 forEach() 的数组本身
 */
const logArrayElements = (element, index ,array1) => {
    console.log(`a[${index}] = ${element},array1.length=${array1.length}`);
  };
const array1 = ['a', 'b', 'c'];
array1.forEach(logArrayElements);

//输出
//a[0] = a,array1.length=3
//a[1] = b,array1.length=3
//a[2] = c,array1.length=3

//使用for循环实现
for (let index = 0; index < array1.length; index++) {
    if(array1[index]!=undefined){
        console.log(`a[${index}] = ${array1[index]},array1.length=${array1.length}`);  
    }
}
也可以传入当前对象,修改当前对象的值,但是不推荐
/**
 * 
 * @param {any} element 数组中正在处理的当前元素
 * @param {number} index 数组中正在处理的当前元素的索引。
 * @param {Array} array1 调用了 forEach() 的数组本身
 */
const logArrayElements = (element, index ,array1) => {
    array1[index]=array1[index]+1
    console.log(`a[${index}] = ${element},array1.length=${array1}`);
  };

const array1 = [1, 2, 3];
array1.forEach(logArrayElements,array1);

console.log(array1)

//输出
//a[0] = 1,array1.length=2,2,3
//a[1] = 2,array1.length=2,3,3
//a[2] = 3,array1.length=2,3,4
//[ 2, 3, 4 ]

for (let index = 0; index < array1.length; index++) {
    if(array1[index]!=undefined){
        array1[index]=array1[index]+1
        console.log(`a[${index}] = ${array1[index]},array1.length=${array1}`);
    }
    
}

2.过滤数组 filter()

filter()

就像把你文件夹里的全部照片挑选喜欢的复制到一个新的文件夹

语法
filter(callbackFn)
filter(callbackFn, thisArg)
例子
function isBigEnough(element, index, array) {
    return (element >= 3);
}
const array1 = [1,2,3,4,5,6]
const filtered = array1.filter(isBigEnough);

console.log('filtered')
console.log(filtered);

console.log('array1保持不变');   //如果你想埋雷,可以array1.filter(isBigEnough,array1),然后修改值
console.log(array1);

//结果
//filtered
//[ 3, 4, 5, 6 ]
//array1
//[ 1, 2, 3, 4, 5, 6 ]
for实现
const array1 = [1,2,3,4,5,6]
const filtered2 = [];
for (let index = 0; index < array1.length; index++) {
    if(array1[index]!=undefined&&array1[index]>=3){
        filtered2.push(array1[index]);
    }
}

console.log('filtered2')
console.log(filtered2);

console.log('array1保持不变');
console.log(array1);

3.“映射”新数组map()

map()

创建一个新数组,这个新数组由原数组中的每个元素都调用一次提供的函数后的返回值组成(就像把你文件夹里的全部照片通过ps修完后复制到一个新的文件夹)

语法:
map(callbackFn)
map(callbackFn, thisArg)

例子:

const numbers = [1, 4, 9];
const roots = numbers.map((num) => Math.sqrt(num));
//结果 [ 1, 2, 3 ]
const numbers = [1, 4, 9];
function mathSqrt(element, index, array){
  return Math.sqrt(element)
}
const roots = numbers.map(mathSqrt);
//结果  [ 1, 2, 3 ]

4.数组判断函数  every() some()

some()

对数组中的每个元素都执行一次指定的函数(callback),直到此函数返回 true。如果m满足条件,some 将返回 true

只需要有一个满足条件就返回true

every()

对数组中的每个元素都执行一次指定的函数(callback),直到此函数返回 false。如果不满足条件,every 将返回 false,每个元素执行后都返回true,ever才会返回true

需要所有的元素都满足条件才能返回true

例子

function isGreater6(element, index, array) {
    return (element > 6);
}
var passed = [1,2,3,4,5,6].some(isGreater6);
console.log(passed); //false
passed = [1,2,3,4,5,6,7].some(isGreater6);
console.log(passed); // true  因为有个7
function isLeq6(element, index, array) {
    return (element <= 6);
}
var passed = [1,2,3,4,5,6].every(isLeq6);
console.log(passed); //tr
passed = [1,2,3,4,5,6,7].every(isLeq6);
console.log(passed); // false  也是因为有个7

5.数组查找元素 lastIndexOf() indexOf()

lastIndexOf()

返回数组中元素最后一次出现的下标

indexOf()

返回数组中元素第一次出现的下标

语法
lastIndexOf(searchElement)
lastIndexOf(searchElement,fromIndex)
indexOf(searchElement)
indexOf(searchElement,fromIndex)
例子
var array = [1,2,3,1];
var index = array.lastIndexOf(1); 
console.log(index); // 1  
index = array.lastIndexOf(4);
console.log(index); // -1
index = array.lastIndexOf(1, 3); // [1,2,3,1]
console.log(index); // 3
index = array.lastIndexOf(1, 2); // [1,2,3]
console.log(index); // 0
index = array.lastIndexOf(1, -2); // [1,2,3]
console.log(index); // 0
index = array.lastIndexOf(1, -1); // [1,2,3,1]
console.log(index); // 3
var array = [1,2,3,1];
var index = array.indexOf(1); 
console.log(index); // 0  
index = array.indexOf(4);
console.log(index); // -1


标签:index,遍历,console,log,array1,js,length,数组,array
From: https://blog.51cto.com/u_3692993/8273934

相关文章

  • jS 数据类型检测
    基本数据类型Undefined、Null、Boolean、Number、String、Symbol(ES6新增)和BigInt(ES10新增);typeoftypeofstr通常检测数据的基本类型,但对引用类型数据判断的话,除function会被识别出来之外,像null、{}、数组都输出为object。typeofnull//'object'typeofundefined//'undefi......
  • NTC 10K 3380 阻值对照表的数组
    因网上没有NTC10K3380的阻值温度对照数组,所以分享各种格式,以供使用直接根据阻值对照表的数组data=[202.2693,191.0637,180.5546,170.6944,161.4387,152.7468,144.5807,136.9052,129.6879,122.8985,116.5089,110.4932,104.8272,99.4883,94.4558,89.7101,85......
  • 【从零开始学习Go语言】八.Go语言的数组切片引用类型与值类型(总结)
    【从零开始学习Go语言】Go语言的数组与切片引用类型与值类型一.数组二.多维数组三.切片四.值类型与引用类型一.数组go语言的数组在之前的一些例子中有引用过,go的数组在创建时需要声明存储数据的类型,长度,并且长度在确定后便不可增加,类似python中的元组数组的声明方式有多种:第一种......
  • JS基础语法
    JavaScipt运行在浏览器的编程语言书写位置内部<body><script>alert('你好')</script></body>外部<body><scriptsrc="my.js"></script></body>创建js文件,与img标签相似行内输入输出语法输出//ale......
  • Java Fastjson反序列化漏洞研究
    一、Fastjson简介Fastjson是阿里巴巴的一个开源项目,在GitHub上开源,使用Apache2.0协议。它是一个支持JavaObject和JSON字符串互相转换的Java库。Fastjson最大的特点在于它的快速,它超越了JackJson、Gson等库。据官方发布的说明,Fastjson从2011年fastjson发布1.1.x版本之后,其性能......
  • form表单 数组中对象校验 深度校验
    <el-formref="dataFormRef":model="form":rules="dataRules"formDialogReflabel-width="100px"v-loading="loading"> <el-form-itemlabel="负责人"prop="directorName"> <el-......
  • pytest + yaml 框架 -58.运行报告总结summary.json
    前言用例运行结束后,在本地生成summary.json文件,总结运行结果。v1.5.1版本更新内容:1.解决参数化,中文在控制台输出问题2.保存用例结果summary.json保存用例结果summary.json命令行执行用例pytest运行结束,在当前目录生成summary.json文件,内容如下{"base_url":"http......
  • python json.loads()字符串转json
    python json.loads()字符串转jsonimportjsonimportrequestsres='''{"code":200,"message":"success","duration":147,"result":{"angle":0,"height":368,"tables":[],&qu......
  • 如何解决LocalDateTime传值JSON格式化问题
    LocalDateTime传值JSON格式化问题推荐方法其它方法LocalDateTime的json格式化问题解决方式一解决方式二LocalDateTime传值JSON格式化问题LocalDateTime是JDK8中提供的新功能,极大的优化了原生日期时间类的使用。但是第一次使用该类可能会在传值过程中出现格式化的小问题(如:JSON无法解......
  • 二叉树前中后序遍历(递归和非递归)+层次遍历
    直接看代码啦!前中后指的是跟被访问的次序!递归很好理解,重点是非递归!!!1#define_CRT_SECURE_NO_WARNINGS2#include<iostream>3#include<fstream>4usingnamespacestd;56typedefstructTreeNode7{8intdata;9intflag;10str......