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

批量快捷创建新数组的几种方式

1. for循环, push(比较简单, 就不上代码了)

2.创建空数组,填充null,然后map: 

function createData() {
return new Array(1000)
.fill(null)
.map((v,i)=>({name: `name${i+1}`}))
}
console.log(createData())

3.Array.from+map

function createData() {
return Array.from({length: 1000})
.map((v,i)=>({name: `name${i+1}`}))
}
console.log(createData())

4.Array.from的第二个fn参数

function createData() {
return Array.from({length: 1000}, (v,i)=>({name: `name${i+1}`}))
}
console.log(createData())

5. Array.of(...数组或类数组)

eg: Array.of(1, 2, 4, 7) => [1, 2, 4, 7]; 想变成新数组, 再链式调用map就行了

6. 手写数据生成器:

function createValues(creator, length = 1) {return Array.from({ length }, creator)
}

1) 随机数据生成器:

const createRandomValues = (len) => createValues(Math.random, len)

// createRandomValues(10) // 10个随机数字组成的数组

2) 序列生成器

const createRange = (start, stop, step) => {const arr = createValues((_, i) => start + (i * step), Math.floor((stop - start) / step) + 1)return arr
}

但是上面在(stop - start) / step有余数时, stop没有打印出来, 因为不符合step的规律, 比如start为1,stop为99, step为3, 但是最后一个元素为97的时候就结束了:

//  [1, 4, 7, 10, 13, 16, 19, 22, 25, 28, 31, 34, 37, 40, 43, 46, 49, 52, 55, 58, 61, 64, 67, 70, 73, 76, 79, 82, 85, 88, 91, 94, 97]

createRange(1, 99, 3);

而有的时候, 或者说大多数时候希望执行到最后一个元素, 可以判断arr[len -1]<stop的时候把stop的值push进去

const createRange = (start, stop, step) => {const arr = createValues((_, i) => start + (i * step), Math.floor((stop - start) / step) + 1)const len = arr.length// 如果最后一项小于stop的值, push一下stop的值if(arr[len -1]<stop) {arr.push(stop)}return arr
}

3) 生成对象数组

// 数据生成器:
function createUser(v, index) {return {name: `user-${index}`,//  0-100随机数字, >> 0 取整age: Math.random() * 100 >> 0}
}
// 生成10条对象数据的数组
const users = createValues(createUser, 10)

http://www.lryc.cn/news/178812.html

相关文章:

  • 单目标应用:基于沙丁鱼优化算法(Sardine optimization algorithm,SOA)的微电网优化调度MATLAB
  • 基于Halo搭建个人博客
  • DPDK系列之三十一DPDK的并行机制简介
  • 【Java】复制数组的四种方式
  • 设计模式5、原型模式 Prototype
  • 驱动挂载物理页代码示例
  • 【新版】系统架构设计师 - 层次式架构设计理论与实践
  • 大数据Flink(九十):Lookup Join(维表 Join)
  • Docker方式创建MySQL8的MGR集群
  • 问 ChatGPT 关于GPT的事情:扩展篇
  • Spring Boot 集成 MinIO 实现文件上传、下载和删除
  • Polygon Miden交易模型:Actor模式 + ZKP => 并行 + 隐私
  • Java流的体系结构(二)
  • python计算阶层
  • 前端架构师之01_ES6_基础
  • 银行卡号识别
  • 【Idea】idea、datagrip设置输入法
  • 回归预测 | MATLAB实现基于RF-Adaboost随机森林结合AdaBoost多输入单输出回归预测
  • 最小生成树 | 市政道路拓宽预算的优化 (Minimum Spanning Tree)
  • Java实现使用多线程,实现复制文件到另一个目录,起不一样的名字,创建100万个数据
  • uni-app:canvas-图形实现1
  • 【算法分析与设计】动态规划(下)
  • 计算机图像处理-均值滤波
  • FreeRTOS入门教程(空闲任务和钩子函数及任务调度算法)
  • Javascript真的是10天内做出来的吗?
  • picoctf_2018_got_shell
  • 作用域 CSS 回来了
  • 简述ceph文件储存系统
  • 计算机图像处理:椒盐噪声和高斯噪声
  • SQL SELECT 子查询与正则表达式