首页 > 编程语言 >【JS封装-数组操作】强化编程实践:精选JavaScript函数封装集锦-关于数组操作(数组去重、排序、过滤、映射等)

【JS封装-数组操作】强化编程实践:精选JavaScript函数封装集锦-关于数组操作(数组去重、排序、过滤、映射等)

时间:2024-06-07 11:34:32浏览次数:14  
标签:function 封装 数组 param returns 集锦 Array array

目录

数组去重

数组快速排序

过滤数组

映射数组

数组扁平化

数组求和

数组最大值

数组最小值

数组切片

数组乱序(洗牌算法)


数组去重

/**
 * 去除数组中的重复项。
 * @param {Array} array 要去重的数组。
 * @returns {Array} 去重后的数组。
 */
function uniqueArray(array) {
    return [...new Set(array)];
}

数组快速排序

/**
 * 对数组进行快速排序。
 * @param {Array} array 要排序的数组。
 * @returns {Array} 排序后的数组。
 */
function quickSort(array) {
    if (array.length <= 1) return array;
    const pivot = array.shift();
    return [
        ...quickSort(array.filter(x => x < pivot)),
        pivot,
        ...quickSort(array.filter(x => x >= pivot))
    ];
}

过滤数组

/**
 * 过滤符合条件的数组元素。
 * @param {Array} array 原始数组。
 * @param {Function} predicate 过滤条件函数。
 * @returns {Array} 过滤后的数组。
 */
function filterArray(array, predicate) {
    return array.filter(predicate);
}

映射数组

/**
 * 对数组每个元素应用一个函数并返回新的数组。
 * @param {Array} array 原始数组。
 * @param {Function} mapper 映射函数。
 * @returns {Array} 映射后的数组。
 */
function mapArray(array, mapper) {
    return array.map(mapper);
}

数组扁平化

/**
 * 将多维数组扁平化为一维数组。
 * @param {Array} array 多维数组。
 * @returns {Array} 扁平化后的数组。
 */
function flattenArray(array) {
    return array.reduce((acc, val) => Array.isArray(val) ? acc.concat(flattenArray(val)) : acc.concat(val), []);
}

数组求和

/**
 * 计算数组所有元素的和。
 * @param {Array<number>} array 数字数组。
 * @returns {number} 数组元素之和。
 */
function sumArray(array) {
    return array.reduce((a, b) => a + b, 0);
}

数组最大值

/**
 * 获取数组中的最大值。
 * @param {Array<number>} array 数字数组。
 * @returns {number} 数组中的最大值。
 */
function maxInArray(array) {
    return Math.max(...array);
}

数组最小值

/**
 * 获取数组中的最小值。
 * @param {Array<number>} array 数字数组。
 * @returns {number} 数组中的最小值。
 */
function minInArray(array) {
    return Math.min(...array);
}

数组切片

/**
 * 获取数组的一部分。
 * @param {Array} array 原始数组。
 * @param {number} start 开始索引。
 * @param {number} [end] 结束索引,默认为数组长度。
 * @returns {Array} 切片后的数组。
 */
function sliceArray(array, start, end = array.length) {
    return array.slice(start, end);
}

数组乱序(洗牌算法)

/**
 * 随机打乱数组顺序。
 * @param {Array} array 要乱序的数组。
 * @returns {Array} 乱序后的数组。
 */
function shuffleArray(array) {
    for (let i = array.length - 1; i > 0; i--) {
        const j = Math.floor(Math.random() * (i + 1));
        [array[i], array[j]] = [array[j], array[i]];
    }
    return array;
}

标签:function,封装,数组,param,returns,集锦,Array,array
From: https://blog.csdn.net/weixin_43298211/article/details/139445091

相关文章

  • 最大子数组和
    Problem:53.最大子数组和目录思路解题方法复杂度CodeCode思路双指针但是用count保存双端的值哪端count小哪端移动解题方法描述你的解题方法复杂度时间复杂度:添加时间复杂度,示例:$O(n)$空间复杂度:添加空间复杂度,示例:$O(n)$Code//这版性能一般fu......
  • 代码随想录第2天 | 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II ,数组总结
    题目:977.有序数组的平方思路:first.for循环,平方,然后sort排序,提交通过啊哈~|但时间复杂度大O(n+nlogn),->O(nlogn)的时间复杂度,题目进阶要求时间复杂度为O(n)second.双指针。题目为有序数组,包含负数,则平方后,最大值在数组的两头,则使用双指针进行,两个比较大小,大的存入新......
  • 浏览器内置对象 window 用法集锦,看这篇就够了
    文章导读:AI辅助学习前端,包含入门、进阶、高级部分前端系列内容,当前是javascript的部分,瑶琴会持续更新,适合零基础的朋友,已有前端工作经验的可以不看,也可以当作基础知识回顾。上面文章带大家看了浏览器内置对象的所有知识点,这篇文章瑶琴开始带大家详细学习这些内置对象,本篇文......
  • 字符数组VS字符串(一文搞懂有什么区别)
    当你在C++的程序中,经常会遇到两种字符串的表达方法,一种是以字符数组的方式,还有用string的,这二者到底有什么不同?下文将会帮彻底弄懂。因为许多函数参数当需要传入字符串的时候,有的代码中使用指向字符数组的指针来传递字符串,其实C++中传入字符数组,就相当于传入一个指向该数......
  • 基于Linux操作系统的生产消费者队列封装(C++)
    一.先前代码及实现(在该篇中会用到)1.基于Linux操作系统的锁的封装-CSDN博客2.基于linux操作系统的线程封装(可实现任意传递任意类型任意个数的参数)-CSDN博客二.生产消费者模型    在一个多线程的进程中,通常存在如下关系生产者和消费者,其中生产者负责生产资源(产生任务......
  • 数组array 和 &array的区别
    问题对于数组array和&array有什么区别呢?先说答案array:指向数组第一个数地址的指针&array:指向整个数组地址的指针所以直接打印的话,地址是一样的.但是如果+1的话,那么array是增加sizeof(int)大小,&array是增加sizeof(int)*array.size()测试#include<iost......
  • 记录工作中常用的 JS 数组相关操作
    工作中难免会遇到各种各样的数据结构,较为全面的了解数组操作,对于复杂数据结构的处理会非常有用且节省时间所以想在这里总结一下工作中常用的数组操作,都是一些非常基础的知识,大家看个乐就好~目录工作中常用的数组方法常见数组方法中的用法、以及坑slice()和splice()方法......
  • §2. 隐函数组
    掌握隐函数组的概念和隐函数组定理,会求隐函数组的偏导数。掌握反函数组定理,会求反函数组的偏导数。难点:求解隐函数组的偏导数(公式法或直接求偏导数然后解方程组)。重点习题:例1、例2、例3   卡尔·雅可比(CarlGustavJacobJacobi,1804~1851),德国数学家。1804年12月10日生......
  • 输出有10个元素的整型数组各元素的值
    (1)下标法编写程序:(2)指针法:将上面程序第7行和第10行的a[i]改为"*(a+i)"。(3)用指针变量指向数组元素编写程序:运行结果:对3种方法的比较:        方法(1)和(2)的执行效率是相同的。C++编译系统是将a[i]转换为*(a+1)处理的,对每个a[i]都分别计算地址a+ixd,然后访问该元素。第......
  • 数据转换-位串字节数组
    utils.c#include"utils.h"intBitstr2ByteArr(unsignedchar*bs,unsignedchar*ba,int*lba){inti,j;for(i=0,j=0;j<*lba;j++){ba[j]=0;for(intk=0;k<8;k++){if(bs[i]=='......