当前位置: 首页 > news >正文

实际开发中一些实用的JS数据处理方法

在这里插入图片描述

写在开头

JavaScript 是一种脚本语言,最初是为了网页提供交互式前端功能而设计的,而现在,通过 Node.js,JavaScript 还可以用于编写服务器端代码。

JavaScript 具有动态性、基于原型的面向对象特性、弱类型、多范式、支持闭包执行环境、支持函数式编程等特点,非常适合编写动态 Web 应用程序。

从语言发展的角度来看,JavaScript 已经成为了现代 Web 开发的核心技术之一。与此同时,JavaScript 的生态系统也在不断壮大,有众多的库和框架可供开发人员选择,包括 Vue.js、React、Angular 等,可以大大提高开发效率和质量。

综上,JavaScript 是一种非常灵活和易于使用的编程语言,适用于动态 Web 应用程序、桌面应用程序、移动应用程序等各种应用场景。它不仅具有良好的性能和可扩展性,还具有丰富的生态系统和强大的社区支持。

常见的一种数据结构:对象数组

对象数组是由多个对象组成的数组。每个对象都包含一些属性和对应的属性值。这些属性可以是字符串、数字、布尔值或其他对象等数据类型。

对象数组通常用于存储和处理相关数据集合。通过使用对象数组,可以轻松地访问和操作数据的各个部分。比如可以使用过滤、映射、排序、分组、聚合计算等技巧,对对象数组中的数据进行加工,以生成需要的数据结构或满足特定业务需求。

例如,可以使用对象数组来存储员工信息,每个员工都是一个包含姓名、工号、职位等属性的独立对象。或者可以使用对象数组来存储电商订单信息,每个订单都是一个包含产品名称、价格、数量等属性的对象。

JavaScript 中,常见的对象数组处理方法有 map()、filter()、sort()、reduce() 等,可以大大简化对象数组的处理过程。总的来说,对象数组是 JavaScript 中常用的一种数据结构,广泛应用于各种应用程序场景。

一些案例参考

1. 数据过滤

在 JavaScript 中,filter() 是一种数组方法,它可以用于过滤一个数组并返回符合特定条件的项。filter() 方法会创建一个新数组,新数组中包含了满足过滤条件的原数组中的所有项。

filter() 方法接受一个回调函数作为参数,并且回调函数可以接受三个参数:当前元素、元素的索引、包含该元素的数组。回调函数应该返回一个布尔值,表示该元素是否应该包含在新数组中。如果回调函数返回 true,则该元素会被包含在新数组中,否则就会被过滤掉。

以下是一些 filter() 方法的使用示例:

const fruits = ['apple', 'banana', 'orange', 'pear'];// 只保留长度大于 5 的项
const filteredFruits = fruits.filter(fruit => fruit.length > 5);
console.log(filteredFruits); // ['banana', 'orange']const numbers = [1, 2, 3, 4, 5];// 只保留奇数
const oddNumbers = numbers.filter(number => number % 2 !== 0);
console.log(oddNumbers); // [1, 3, 5]const users = [{ name: 'Tom', age: 18 },{ name: 'Lucy', age: 22 },{ name: 'Lily', age: 16 },{ name: 'Jim', age: 25 }
];// 只保留年龄大于 20 的用户
const adultUsers = users.filter(user => user.age > 20);
console.log(adultUsers); // [{ name: 'Lucy', age: 22 }, { name: 'Jim', age: 25 }]

总之,filter() 方法是一种非常有用的数组方法,可以帮助开发人员很容易地从一个数组中获取符合特定条件的项。

2. 数据映射

在 JavaScript 中,map() 方法是一种数组方法,它可以用于将数组中的每个元素应用于一个函数,并返回一个新的数组,新数组中的每个元素都是该函数的返回值。该方法不会改变原数组,而是返回一个新的数组。

map() 方法接受一个回调函数作为参数,并且回调函数可以接受三个参数:当前元素、元素的索引、包含该元素的数组。回调函数应该返回一个值,就是将该值添加到新数组中的元素的值。

以下是一些 map() 方法的使用示例:

const numbers = [1, 2, 3, 4, 5];// 将数组中的每个数字加倍
const doubledNumbers = numbers.map(number => number * 2);
console.log(doubledNumbers); // [2, 4, 6, 8, 10]const fruits = ['apple', 'banana', 'orange'];// 将每个水果名字变成大写字母
const uppercaseFruits = fruits.map(fruit => fruit.toUpperCase());
console.log(uppercaseFruits); // ['APPLE', 'BANANA', 'ORANGE']const users = [{ name: 'Tom', age: 18 },{ name: 'Lucy', age: 22 },{ name: 'Lily', age: 16 },{ name: 'Jim', age: 25 }
];// 获取所有用户的名字
const names = users.map(user => user.name);
console.log(names); // ['Tom', 'Lucy', 'Lily', 'Jim']

总之,map() 方法是一种非常实用的数组方法,可以将一个数组中的元素转换为新的元素,并返回一个基于原始数组的新数组。

3. 数据排序

const users = [{ name: 'Tom', age: 18 },{ name: 'Lucy', age: 22 },{ name: 'Lily', age: 16 },{ name: 'Jim', age: 25 },{ name: 'Bob', age: 30 }
];// 按照年龄从小到大排序
const sorted = users.sort((a, b) => a.age - b.age);
console.log(sorted); // [{ name: 'Lily', age: 16 }, { name: 'Tom', age: 18 }, { name: 'Lucy', age: 22 }, { name: 'Jim', age: 25 }, { name: 'Bob', age: 30 }]

在 JavaScript 中,sort() 方法是一种数组方法,它可以用于对数组进行排序操作,排序结果可以是升序或降序。sort() 方法按照 Unicode 编码顺序对数组中的元素进行排序,即默认情况下按照字符串形式排序。

sort() 方法返回一个排序后的数组。原始数组不被修改,而是返回一个新的排好序的数组。

sort() 方法可以接受一个可选的比较函数,用于指定排序规则。比较函数应该接受两个参数,代表要进行比较的两个元素,并返回一个数字表示它们的排序顺序。如果返回值为负数,则表示第一个元素应该排在第二个元素之前;如果返回值为正数,则表示第一个元素应该排在第二个元素之后;如果返回值为零,则表示两个元素相对位置不变。

以下是一些 sort() 方法的使用示例:

const numbers = [3, 8, 6, 1, 9];// 将数字数组进行升序排序
const ascendingNumbers = numbers.sort((a, b) => a - b);
console.log(ascendingNumbers); // [1, 3, 6, 8, 9]// 将数字数组进行降序排序
const descendingNumbers = numbers.sort((a, b) => b - a);
console.log(descendingNumbers); // [9, 8, 6, 3, 1]const fruits = ['apple', 'banana', 'orange'];// 将水果数组进行升序排序
const ascendingFruits = fruits.sort();
console.log(ascendingFruits); // ['apple', 'banana', 'orange']// 将水果数组进行降序排序
const descendingFruits = fruits.sort((a, b) => b.localeCompare(a));
console.log(descendingFruits); // ['orange', 'banana', 'apple']

总之,sort() 方法是一种功能丰富的数组方法,可以对数组进行排序操作,并支持自定义排序规则。

4. 数据聚合计算

const users = [{ name: 'Tom', age: 18, gender: 'male' },{ name: 'Lucy', age: 22, gender: 'female' },{ name: 'Lily', age: 16, gender: 'female' },{ name: 'Jim', age: 25, gender: 'male' },{ name: 'Bob', age: 30, gender: 'male' }
];// 按照性别分组
const grouped = users.reduce((result, current) => {(result[current.gender] = result[current.gender] || []).push(current);return result;
}, {});console.log(grouped);
/*
{male: [{ name: 'Tom', age: 18, gender: 'male' },{ name: 'Jim', age: 25, gender: 'male' },{ name: 'Bob', age: 30, gender: 'male' }],female: [{ name: 'Lucy', age: 22, gender: 'female' },{ name: 'Lily', age: 16, gender: 'female' }]
}
*/
const orders = [{ product: 'Apple', price: 10, count: 2 },{ product: 'Pear', price: 8, count: 3 },{ product: 'Banana', price: 6, count: 4 },{ product: 'Orange', price: 7, count: 5 }
];// 计算所有订单的总价格
const total = orders.reduce((result, current) => result + current.price * current.count, 0);
console.log(total); // 102

在 JavaScript 中,reduce() 方法是一种数组方法,它可以用于对数组中的元素逐个应用一个函数并将其结果汇总为单个值。该方法接受一个函数作为参数,并且该函数会接受一个累积值和当前迭代的元素,然后将这两个值组合为一个新的累积值。

reduce() 方法可以用于求和、计算平均值、计算最大值等各种操作。该方法的结果是最终的累积值,可以是数字、字符串或任何 JavaScript 数据类型。

以下是一些 reduce() 方法的使用示例:

const numbers = [1, 2, 3, 4, 5];// 计算数字数组中所有数字的和
const sum = numbers.reduce((accumulator, currentValue) => accumulator + currentValue, 0);
console.log(sum); // 15// 计算数字数组中所有数字的平均值
const average = numbers.reduce((accumulator, currentValue, index, array) => {accumulator += currentValue;if (index === array.length - 1) {return accumulator / array.length;} else {return accumulator;}
}, 0);
console.log(average); // 3const words = ['apple', 'banana', 'orange'];// 将所有单词合并为一个字符串
const mergedString = words.reduce((accumulator, currentValue) => accumulator + currentValue, '');
console.log(mergedString); // 'applebananaorange'

总之,reduce() 方法是一种非常实用的数组方法,可以对数组中的元素进行累积操作,并返回一个最终的累积值。

相关文章:

实际开发中一些实用的JS数据处理方法

写在开头 JavaScript 是一种脚本语言,最初是为了网页提供交互式前端功能而设计的,而现在,通过 Node.js,JavaScript 还可以用于编写服务器端代码。 JavaScript 具有动态性、基于原型的面向对象特性、弱类型、多范式、支持闭包执行…...

10:00进去,10:05就出来了,这问的也太变态了···

从外包出来,没想到死在另一家厂子了。 自从加入这家公司,每天都在加班,钱倒是给的不少,所以也就忍了。没想到5月一纸通知,所有人不许加班,薪资直降30%,顿时有吃不起饭的赶脚。 好在有个兄弟内推…...

GPT时代,最令人担心的其实是“塔斯马尼亚效应”

目录 教育到底教什么? 过度依赖GPT可能导致文明退化 GPT可以帮助人类破解“学海无涯极限”悖论 春季学期伊始,全球各地的老师们如临大敌,因为学生们带着ChatGPT杀过来了。Study.com的调研显示,每10个学生中就有超过9个知道Chat…...

基于容器技术和服务发现的全新大数据平台弹性伸缩方法

随着科技的不断发展,各个行业都在不断地数字化和智能化。在这个过程中,大数据技术成为了许多行业的重要支撑。而随着大数据技术的普及,行业分类和设备装置的不断更新换代,弹性伸缩成为了一个不可避免的问题。本文将介绍基于服务发…...

php8 match

刚从 php7 升级到 php8 时 我在使用 switch 语句,结果出现了一个提示: "switch statement can be converted to match expression" 翻译过来就是: switch语句可以转换为match表达式 我当时在想,match 应该是php8 的…...

ADS-B接收机Radarcape

1.设备简介 Radarcape是一款便携、高性能、功能强大的ADS-B地面接收机。Radarcape的设备清单包含:ADS-B接收机主机,专业级ADS-B天线,GPS天线,电源线,网线。 2. 功能特点 Radarcape可以通过网口输出飞机的原始数据D…...

软件测评师2012年下半年考试真题<更新中。。。>

1.2012 年下半年全国计算机技术与软件专业技术资格(水平)考试日期是 11月4号。 2.在 CPU 中,控制器 不仅要保证指令的正确执行,还要能够处理异常事件。 3.循环冗余校验码(CRC) 利用生成多项式进行编码。设数据位为 k 位…...

ChatGPT 使用 拓展资料:开始构建你的优质Prompt

ChatGPT 使用 拓展资料:开始构建你的优质Prompt...

Hystrix原理

一.概述 在软件架构领域,容错特指容忍并防范局部错误,不让这种局部错误不断扩大。我们在识别风险领域,风险可以分为已知风险和未知风险,容错直接应对的就是已知风险,这就要求针对的场景是:系统之间调用延时…...

内网外网分离模式下,通过网关转发,来部署前后端分离的系统

前言 最近为某银行系统部署了一套商城系统,网络环境比较特别,思路记录下,其中商场系统使用前后端分离模式部署。 该银行网络环境: 外网服务器:外网可以访问到它,不能访问外网。 网关服务器:跟…...

基于 Amazon API Gatewy 的跨账号跨网络的私有 API 集成

一、背景介绍 本文主要讨论的问题是在使用 Amazon API Gateway,通过 Private Integration、Private API 来完成私有网络环境下的跨账号或跨网络的 API 集成。API 管理平台会被设计在单独的账号中(亚马逊云科技提供的是多租户的环境),因为客观上不同业务…...

SSH远程连接时报错kex_exchange_identification: Connection closed by remote host

简介 在SSH服务器上进行远程内容时,会经常出现kex_exchange_identification: Connection closed by remote host内容,主要是由于远程计算机登录节点的数量限制问题。 解释 在 SSH 服务器上,最大并发登录会话数是由 ‘MaxSessions’ 参数来…...

一、CNNs网络架构-基础网络架构

目录 1.LeNet 2.AlexNet 2.1 激活函数:ReLU 2.2 随机失活:Droupout 2.3 数据扩充:Data augmentation 2.4 局部响应归一化:LRN 2.5 多GPU训练 2.6 论文 3.ZFNet 3.1 网络架构 3.2 反卷积 3.3 卷积可视化 3.4 ZFNet改…...

[开发|C++] C++的基本运算符说明笔记

基本运算符说明 C是一种功能强大的编程语言,提供了多种运算符来执行各种基本操作。下面是一些常见的C基本运算符及其说明: 算术运算符: :加法运算符,用于执行两个操作数的相加操作。 -:减法运算符&#xf…...

抖音定位功能的作用

随着智能手机和社交网络的普及,人们日常生活中对于位置信息的需求也越来越高。而抖音作为一款以短视频为主的社交应用,其定位技术也备受关注。本文将就抖音的定位功能进行探究,介绍抖音如何获取、处理和利用用户的位置信息,并探讨…...

阿里 P9 推荐的 Spring 领域巅峰之作,直接颠覆了我对 Spring 的认知

写在前面 你第一次接触 spring 框架是在什么时候?相信很多人和我一样,第一次了解 spring 都不是做项目的时候用到,而是在网上看到或者是听到过一个叫做 spring 的框架,这个框架号称完爆之前的 structs 和 structs2,吸…...

R语言结构方程模型(SEM)在生态学领域中的实践应用

结构方程模型(Sructural Equation Model)是一种建立、估计和检验研究系统中多变量间因果关系的模型方法,它可以替代多元回归、因子分析、协方差分析等方法,利用图形化模型方式清晰展示研究系统中变量间的因果网络关系,…...

Java设计模式-模板方法模式

简介 在软件开发中,设计模式是一种被广泛采用的方法,用于解决常见的设计问题。模板方法模式是其中一种重要的设计模式之一,它提供了一种将算法的结构骨架固定,但允许子类实现具体步骤的机制。 模板方法模式是一种行为型设计模式…...

Start JDKFlightRecorder--人工翻译

可以同时运行多个JFR记录,并且每个JFR记录都可以使用不同的配置,你可以使用不同的JFR记录去捕获不同的事件集。但是,为了使JFR内部逻辑更加精简,生成的记录始终包含当时活动的所有记录的所有事件的并集。这意味着,运行…...

Python3安装pyhanlp最佳解决方法

1、Hanlp介绍 Hanlp是一款中文自然语言处理工具。Hanlp支持多种自然语言处理任务,包括分词、词性标注、命名实体识别、依存句法分析、情感分析、文本分类等。其主要优点包括: 高准确率:Hanlp采用了基于神经网络的分词方法,有效提…...

脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)

一、数据处理与分析实战 (一)实时滤波与参数调整 基础滤波操作 60Hz 工频滤波:勾选界面右侧 “60Hz” 复选框,可有效抑制电网干扰(适用于北美地区,欧洲用户可调整为 50Hz)。 平滑处理&…...

系统设计 --- MongoDB亿级数据查询优化策略

系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log,共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题,不能使用ELK只能使用…...

STM32F4基本定时器使用和原理详解

STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案

随着新能源汽车的快速普及,充电桩作为核心配套设施,其安全性与可靠性备受关注。然而,在高温、高负荷运行环境下,充电桩的散热问题与消防安全隐患日益凸显,成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...

【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分

一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...

Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理

引言 Bitmap(位图)是Android应用内存占用的“头号杀手”。一张1080P(1920x1080)的图片以ARGB_8888格式加载时,内存占用高达8MB(192010804字节)。据统计,超过60%的应用OOM崩溃与Bitm…...

零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)

本期内容并不是很难,相信大家会学的很愉快,当然对于有后端基础的朋友来说,本期内容更加容易了解,当然没有基础的也别担心,本期内容会详细解释有关内容 本期用到的软件:yakit(因为经过之前好多期…...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”

2025年#高考 将在近日拉开帷幕,#AI 监考一度冲上热搜。当AI深度融入高考,#时间同步 不再是辅助功能,而是决定AI监考系统成败的“生命线”。 AI亮相2025高考,40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕,江西、…...

【Java学习笔记】BigInteger 和 BigDecimal 类

BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点:传参类型必须是类对象 一、BigInteger 1. 作用:适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...

HashMap中的put方法执行流程(流程图)

1 put操作整体流程 HashMap 的 put 操作是其最核心的功能之一。在 JDK 1.8 及以后版本中,其主要逻辑封装在 putVal 这个内部方法中。整个过程大致如下: 初始判断与哈希计算: 首先,putVal 方法会检查当前的 table(也就…...