JavaScript中字符串、列表、对象常用方法

一. String

const str = 'hello world!';

1. 查询

1.1 indexOf

返回指定字符串值在字符串中首次出现的位置,没有找到则返回 -1

const n = str.indexOf('world')
1.2 includes

用于判断字符串是否包含指定的子字符串。如果找到匹配的字符串则返回 true,否则返回 false。

const n = str.includes('world')

2. 编辑

2.1 concat

用于连接多个字符串

const str1 = 'Hello';
const str2 = 'world';
const str = str1.concat(' ', str2, '!');
2.2 replace / replaceAll

const str = "Hello, world! Hello, everyone!";

  • replace() 方法会替换与正则表达式或字符串参数匹配的第一个字符串。如果要替换所有字符串,需要在正则表达式后加 g;如果不区分大小写,需要在正则表达式之后加 i
const newStr1 = str.replace("Hello", "Hi");  	// "Hi, world! Hello, everyone!" const newStr2 = str.replace(/Hello/g, "Hi");	// "Hi, world! Hi, everyone!"
  • replaceAll() 方法会替换字符串中所有与给定值匹配的子串,无论该值出现多少次。
const newStr = str.replaceAll("Hello", "Hi");	// "Hi, world! Hi, everyone!"
2.3 substring / slice / substr
  • substring(startIndex, endIndex) 方法返回字符串中两个指定的下标之间的字符。子字符串包括 startIndex 的字符,不包括 endIndex 的字符,并且两个下标值不能为负数。

    默认情况下,startIndex 小于 endIndex,否则 substring 会交换参数位置,也就是说 substring(5, 0) 相当于 substring(0, 5)。

const newStr = str.substring(0, 5);				// 'Hello'
  • slice(startIndex, endIndex) 方法也用于提取两个下标之间的字符。区别在于,两个下标值都可以为负数,负数表示从尾部开始截取。

    默认情况下,startIndex 小于 endIndex,slice(5) 相当于 slice(0, 5),slice(-6) 相当于 slice(-6, 0)。如果相反,会返回空字符。

const newStr = str.slice(-6, -1);			// 'world'
  • substr(startIndex, n) 方法用于从起始位置开始提取指定数量的字符。
const newStr = str.substr(6, 5);		// 'world'
2.4 split

用于将一个字符串分割成字符串数组。

const ss = str.split(' ');		// ['Hello', 'world!']

二. Array

const fruits = [ "Banana", "Orange", "Apple", "Mango"];

1. 查询

1.1 isArray

用于判断一个对象是否为数组。

Array.isArray(fruits);			//true
1.2 includes

用于判断列表中是否有某个指定的值。

fruits.includes('Apple');			// true
1.3 indexOf

返回数组中某个指定元素的位置,如果没找到指定元素则返回 -1

const index = fruits.indexOf('Apple');			// 2

2. 编辑

2.1 concat

用于拼接两个或多个数组,返回新数组

const a = ["Banana", "Orange", "Apple"];
const b = ["Lemon","Pineapple"];
const c = a.concat(b);		// ["Banana", "Orange", "Apple", "Lemon","Pineapple"]
2.2 push / unshift

push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度。
unshift() 方法可向数组的开头添加一个或更多元素,并返回新的长度。

fruits.unshift("Lemon","Pineapple");			// 6// fruits = ["Lemon","Pineapple", "Banana", "Orange", "Apple", "Mango"]
2.3 pop / shift

pop() 方法删除数组的最后一个元素并返回。
shift() 方法删除数组的第一个元素并返回。

fruits.pop();			// Mango// fruits = [ "Banana", "Orange", "Apple"]

注意, push / unshift / pop / shift 这几种方法都会改变原数组

2.4 slice

slice(start, end) 返回从原有数组中提取出两个下标之间的元素,返回新数组。包含 start 位置元素,不包含 end 位置元素。

const newFruits = fruits.slice(1, 3);		// ["Orange", "Apple"] 
2.5 join

用于将数组中的元素通过指定的分割符转换成字符串。

const str = fruits.join('-');		// 'Banana-Orange-Apple-Mango'

3. 循环

const arr = [1, 2, 3, 4, 6];

3.1 forEach

forEach 方法用于遍历数组的每个元素,并执行提供的函数。

arr.forEach((item, index, arr) => {		// item:当前元素, index: 当前元素的索引, arr: 列表对象if (item === 3) return;			// 跳过3console.log(item)
})

forEach 方法不改变原数组,不能中断或跳出循环(没有 break 或 continue),可以使用 return 语句来实现 continue 关键字的效果。

3.2 map

map 方法返回一个新数组,新数组中的元素是原始数组中每个元素调用函数处理后的返回值。

const newArr = arr.map((item, index, arr) => {return item * 2;
})		// [2, 4, 6, 8, 10]
3.3 filter

filter 方法创建一个新数组,新数组中的元素是原数组中符合条件的元素。

const newArr = arr.filter(item => item > 2); 	// [3, 4, 5]
3.4 some / every

这两个方法用于测试数组中的某些或所有元素是否满足特定条件。
some:只要有一个元素满足条件,就返回true。
every:所有元素都必须满足条件,才返回true。

const hasEven = arr.some(item => item % 2 === 0); 	// trueconst areAllEven = arr.every(item => item % 2 === 0);	// false
3.5 reduce

reduce 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。
array.reduce(function(total, currentValue, currentIndex, arr), initialValue)

initialValue:可选,传递给函数的初始值

// 计算数组元素的总和
const arr = [1, 2, 3, 4, 6]const sum = arr.reduce((total, item) => total + item, 0);	// 将对象数组转换为对象
const users = [  { id: 1, name: 'Alice' },  { id: 2, name: 'Bob' },  { id: 3, name: 'Charlie' }  
];  const userById = users.reduce((userObj, item) => {  userObj[item.id] = item.name;  return userObj;  
}, {});
// {'1': 'Alice', '2': 'Bob', '3': 'Charlie' }

三. Object

1. 查询

1.1 hasOwnProperty

hasOwnProperty() 用于检查对象自身属性(实例)中是否含有某个属性,无法找到原型上的属性。

in 操作符也可以用于检查对象中是否还有某个属性,不管是在实例中还是原型中。

Object.prototype.num = 1;		// 在Object原型上添加了属性num,由于原型链的继承机制,所有对象都会继承num属性const obj = {key: 'value'};obj.hasOwnProperty('key');		// true
obj.hasOwnProperty('num');		// false'key' in obj;	// true
'num' in obj: 	// true

2. 循环

2.1 entries / keys / values

用于遍历对象的键值对 / 键名 / 键值

let obj = { one: 1, two: 2 };Object.keys(obj);		// ['one', 'two']Object.values(obj);		// [1, 2]Object.entries(obj);	// [['one', 1], ['two', 2]]

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

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

相关文章

基于Docker for Windows部署ChatGPT-Next-Web

基于Docker for Windows部署ChatGPT-Next-Web 项目地址安装Docker for Windows部署项目参数讲解参数示例 运行 项目地址 https://github.com/ChatGPTNextWeb/ChatGPT-Next-Web 安装Docker for Windows 官网地址:https://www.docker.com/ 下拉找到Download 选择W…

11、Lua 数组

Lua 数组 Lua 数组一维数组多维数组 Lua 数组 数组,就是相同数据类型的元素按一定顺序排列的集合,可以是一维数组和多维数组。 Lua数组的索引键值可以使用整数表示,数组的大小不是固定的。 一维数组 一维数组是最简单的数组,其…

Rust 的 termion 库控制终端光标的位置

在控制台应用程序中,固定打印在屏幕的第一行通常涉及到控制终端光标的位置。Rust 标准库本身并不提供直接控制终端光标位置的功能,但你可以使用第三方库如 termion 来实现这个需求。 termion 是一个用于处理终端的 Rust 库,它提供了很多有用…

Java设计模式:代理模式的静态和动态之分(八)

码到三十五 : 个人主页 心中有诗画,指尖舞代码,目光览世界,步履越千山,人间尽值得 ! 在软件设计中,代理模式是一种常用的设计模式,它为我们提供了一种方式来控制对原始对象的访问。在Java中&a…

文件操作的详序

1.为什么使用文件? 如果没有文件,我们写的程序的数据是存储在电脑的内存中,如果程序退出,内存回收,数据就丢失了,等再次运行程序,是看不到程序的数据的,如果将数据进行持久化的保存…

【社会救助管理系统】主要设计及拟采用的技术方案

主要设计及拟采用的技术方案 1. 主要设计(1)系统架构设计(2)功能设计(3)安全性设计 2. 设计思想(1)系统架构设计思想(2)功能设计思想(3&#xff0…

python实现TCP服务器

import socket # 创建一个socket对象 server_socket socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 获取本地主机名 host socket.gethostname() # 设置一个端口 port 12345 # 绑定端口 server_socket.bind((host, port)) # 设置最大连接数,超过…

Linux 使用管理线程、多线程、分离线程

目录 一、使用线程 1、pthread_create创建线程 2、pthread_join等待线程 主线程获取新线程退出结果 获取新线程退出返回的数组 3、线程异常导致进程终止 4、pthread_exit 5、pthread_cancel 6、主线程可以取消新线程,新线程可以取消主线程吗 二、如何管理线…

使用C#清除字符串结尾的数字的方法参考

假如我们要复制一个物体,一般我们希望复制出来的物体与原来的物体名字不同,而且最好是结尾加上序号,比如原始物体叫abc,那么复制出来的物体叫abc0001。 问题是如果物体本来已经带序号了,比如已经叫abc0005了&#xff0…

59 使用 uqrcodejs 生成二维码

前言 这是一个最近的一个来自于朋友的需求, 然后做了一个 基于 uqrcodejs 来生成 二维码的一个 demo package.json 中增加以依赖 "uqrcodejs": "^4.0.7", 测试用例 <template><div class"hello"><canvas id"qrcode&qu…

nginx + keepalived 搭建教程

1.安装依赖 yum install -y keepalived systemctl start keepalived systemctl enable keepalived 2.配置 a. keepalived.conf配置 global_defs {router_id nginx_server2 # 机器标识(backup节点为nfs_server2) }vrrp_script chk { script "/etc/keepalived/check_po…

信息系统项目管理师——第18章项目绩效域管理(一)

本章节内容属于第四版新增知识&#xff0c;为PMBOK第七版专有&#xff0c;选择、案例、论文都会考&#xff0c;属于比较重要的章节。 选择题&#xff0c;稳定考3分左右&#xff0c;新教材基本考课本原话&#xff0c;需要多读课本&#xff0c;多刷题。 案例题&#xff0c;考的概…

Spring中BeanFactoryPostProcessor详解

目录 功能与作用 使用案例 spring提供的常见BeanFactoryPostProcessor 1.EventListenerMethodProcessor 2.BeanDefinitionRegistryPostProcessor 功能与作用 使用案例 spring提供的唯一BeanDefinitionRegistryPostProcessor 总结 功能与作用 参考BeanFactoryPostProce…

mAP:目标检测算法性能评估参数

在计算机视觉和图像识别领域&#xff0c;特别是在评估目标检测算法的性能时&#xff0c;mAP&#xff08;Mean Average Precision&#xff09;平均精度均值&#xff0c;是一个常用的评价指标。mAP 及其变体是在不同条件下对模型性能进行评估的参数。下面是对这些参数的解释&…

QA测试开发工程师面试题满分问答4: 如何测试购物车功能?

当测试一个购物车时&#xff0c;我们需要采用全面的测试策略&#xff0c;以确保购物车在各种情况下的功能正常、性能良好和用户体验优秀。以下是一个详细的测试计划&#xff0c;包含了各个方面的测试。 功能测试&#xff1a; 添加商品到购物车&#xff1a;验证能否将商品成功添…

入门级深度学习主机组装过程

一 配置 先附上电脑配置图&#xff0c;如下&#xff1a; 利用公司的办公电脑对配置进行升级改造完成。除了显卡和电源&#xff0c;其他硬件都是公司电脑原装。 二 显卡 有钱直接上 RTX4090&#xff0c;也不能复用公司的电脑&#xff0c;其他配置跟不上。 进行深度学习&…

Mac 如何彻底卸载Python 环境?

第一步&#xff1a;首先去应用程序文件夹中&#xff0c;删除关于Python的所有文件&#xff1b; 第二步&#xff1a;打开terminal终端&#xff0c;输入下面命令查看versions下有哪些python版本&#xff1b; ls /library/frameworks/python.framework/versions第三步&#xff1…

网络地址结构

sockaddr_in window 头文件<winsock.h> linux头文件 <netinet/in.h>或者<arpa/inet.h> struct sockaddr_in {short sin_family;u_short sin_port;struct in_addr sin_addr;char sin_zero[8]; } ;in_addr window 头文件<wins…

【算法集训】基础算法:前缀和 | 概念篇

前缀和就是对于顺序表&#xff08;数组、列表&#xff09;来说&#xff0c;计算前面某一段元素的和。 1、部分和 给定一个数组&#xff0c;求某一段子数组的和。 2、朴素做法 int partialSum(int *a, int l, int r) {int i;int s 0;for(i l; i < r; i) {s a[i];}retu…

docker-compose安装jenkins

1、环境准备&#xff1a;准备安装好docker的服务器一台 2、在服务器上创建一个目录用于安装Jenkins mkdir jenkins3、下载好要挂载的&#xff1a;maven、jkd&#xff1b;并将下载好的tar.gz包上传至服务器待安装目录中并解压 tar -xzvf tar -xzvf apache-maven-3.9.6-bin.tar…