当前位置:首页 > 技术文章 > 正文内容

ES6史上最全数JS数组方法合集-02-数组操作

zonemu3个月前 (07-10)技术文章51

数组生成 array.of

let res = Array.of(1, 2, 3)
console.log(res) // [1, 2, 3]

下标定位 indexOf

用于查找数组中是否存在某个值,如果存在则返回某个值的下标,否则返回-1

let list = [1, 2, 3];
console.log(list.indexOf(2))  // 1
console.log(list.indexOf('饼干'))  // -1

元素存在 includes

检测数组中是否存在该元素,返回布尔

let list = [1, 2, 3];
console.log(list.includes(2))  // true

数组添加 push

向数组后面添加元素,返回值为数组的length

let list = [1, 2, 3];
let res = list.push(1)
console.log(res) // 4

数组头添加 unshift

向数组的头部添加元素,返回值为数组的length

let list = [1, 2, 3];
let res = list.unshift(0)
console.log(res) // 0,1,2,3

数组反转 reverse

用于数组反转,返回新数组

let list = [1, 2, 3]
let res = list.reverse()
console.log(res) //  [3, 2, 1]

数组拼接 join

用于数组以什么形式拼接,返回字符串

let list = [1, 2, 3]
let res = list.join('-')
console.log(res)  // 1-2-3

数组排序 sort

用于数组排序,接收函数参数,排序规则根据参数函数返回值,返回新数组

  • 返回值为正数,后面的挪到前面
  • 返回值为负数,保持不动
  • 返回值为0,保持不动
let list = [1, 2, 3]
let sortRes = list.sort((a, b)=> b-a)
console.log(sortRes)  // [3, 2, 1]

数组合并 concat

用于合并数组,返回新数组

let list = [1, 2, 3]
let res = list.concat([4, 5, 6])
console.log(res)  // [1, 2, 3, 4, 5, 6]

数组遍历(each)

for、for...of...、forEach

const list = [1, 2, 3, 4, 5, 6, 7, 8,, 10, 11];

for (let i = 0, len = list.length; i < len; i++) {
  if (list[i] === 5) {
    break; // 1 2 3 4
    // continue; // 1 2 3 4 6 7 8 undefined 10 11
  }
  console.log(list[i]);
}

for (const item of list) {
  if (item === 5) {
    break; // 1 2 3 4
    // continue; // 1 2 3 4 6 7 8 undefined 10 11
  }
  console.log(item);
}

list.forEach((item, index, arr) => {
  if (item === 5) return;
  console.log(index); // 0 1 2 3 5 6 7 9 10
  console.log(item); // 1 2 3 4 6 7 8  10 11
});

三者都是基本的由左到右遍历数组

  • forEach 无法跳出循环;for 和 for ..of 可以使用 break 或者 continue 跳过或中断。
  • for ...of 直接访问的是实际元素。for 遍历数组索引,forEach 回调函数参数更丰富,元素、索引、原数组都可以获取。
  • for ...of 与 for 如果数组中存在空元素,同样会执行。

补充 forEach中执行异步任务

  • forEach中执行异步任务,不会等待异步任务完成,这个时候可以用 for ..of替代。

数组转换(map)

将一个对象数组的某个属性以逗号拼接起来:重点map可以遍历数组,而且不改变原始数组数据,可以通过map返回一个经过修饰的新数组

比如输入[{"a":1},{"a":2},{"a":3},{"a":4},{"a":5}]返回1,2,3,4,5

function getFileCode(array){
  let result = null;
  if(array && array.length>0){
      result = array.map((item,index)=>{
          return item.fileCode;
      }).join(",");
  }
  return result;
}

数组过滤(filter)

可以过滤数组中指定的元素

const list = [
{ name: '头部导航', type: 'nav', id: 1 },,
{ name: '轮播', type: 'content', id: 2 },
{ name: '页脚', type: 'nav', id: 3 },
];
const resultList = list.filter(item => {
  console.log(item);
  return item.type === 'nav';
});
// resultList: [
//   { name: '头部导航', type: 'nav', id: 1 },
//   { name: '页脚', type: 'nav', id: 3 },
// ]

const newList = list.map(item => {
  console.log(item);
  return item.id;
});
// newList: [1, empty, 2, 3]

// list: [
//   { name: '头部导航', type: 'nav', id: 1 },
//   empty,
//   { name: '轮播', type: 'content', id: 2 },
//   { name: '页脚', type: 'nav', id: 3 },
// ]

数组查询(find)

  • find 方法返回数组中满足 callback 函数的第一个元素的值。如果不存在返回undefined。
  • findIndex 它返回数组中找到的元素的索引,而不是其值,如果不存在返回 -1。
const list = [
{ name: '头部导航', id: 1 },
{ name: '轮播', id: 2 },
{ name: '页脚', id: 3 },
];
const result = list.find((item) => item.id === 3);
// result: { name: '页脚', id: 3 }
result.name = '底部导航';
// list: [
//   { name: '头部导航', id: 1 },
//   { name: '轮播', id: 2 },
//   { name: '底部导航', id: 3 },
// ]

const index = list.findIndex((item) => item.id === 3);
// index: 2
list[index].name // '底部导航';

数组判断(some)

some函数如果有一个元素存在则返回true

const list = [
{ name: '头部导航', id: 1 },
{ name: '轮播', id: 2 },
{ name: '页脚', id: 3 },
];
const result = list.some((item) => item.id === 3);
//result = true/false

相关文章

2024年10 大 Linux 桌面发行版推荐

年已过半,现在是探究 2024 年最流行的 Linux 发行版的最佳时机。Linux 是一个开源操作系统,构建在 Linux 内核上,并集成了 GNU shell 实用程序、桌面环境、应用程序、包管理...

配置GitLab流水线和门禁系统(gitlab工作流)

在项目开发的过程中,为了保证代码质量,我们会使用诸多代码质量检测工具,这些工具或是在本地,或是在云端,虽然工具可以检测出异常问题,但是这些问题还是需要我们程序员来修复,如果我们不强制所有人必须修复异常...

100行Html5+CSS3+JS代码实现元旦倒计时界面

一、前言2022年到了,祝大家虎年大吉喜气临,昂首摆尾迎春来。双眼圆睁看世界,万水千山尽开颜。胡须翘翘美姿态,人人开心祝平安。巨大身躯摇摆摆,坎坷困境当笑谈。愿你虎年万事顺,吉星高照旺旺旺!二、202...

全屋定制板材怎么选不出错?6 种板材深度对比,3 套方案闭眼选

装修选板材头疼吧?刚装完的柜子变形发霉,说好的环保结果甲醛超标,这种翻车现场见太多了。厨房卫生间千万别用密度板,这玩意儿遇水就膨胀,半年准完蛋。颗粒板性价比确实高,但小厂出的真心不敢用。环保等级至少得...

面试官-如何实现数组和 List 之间的转换?

数组和List是Java开发中常见的两种数据结构,那么如何实现二者之间的快速转换就成了面试官常问的考点之一,下面我们我们就来从数组转List和List转数组两个方面来展开介绍一下。数组转List方法...

AOP的实现落地(拦截过滤),一切都要从Servlet说起

一、一切要从Servlet说起1.1什么是ServletServlet(Server Applet),全称是Java Servlet,是提供基于协议请求/响应服务的Java类。在JavaEE中是Ser...