javascript - 从数组中获取一系列现有成员的最快方法是什么?
问题描述
我们有一个像这样填充的数组:
const arr = [];
arr[3] = 'content3';
arr[4] = 'content4';
arr[6] = 'content6';
arr[7] = 'content7';
现在我们想要获取以索引 3 开始,以索引 6 结束的现有项目。这是一个简单的方法:
const slice = arr.slice(3,7); // ["content3", "content4", empty, "content6"]
const cleanSlice = slice.filter(a => a); // ["content3", "content4", "content6"]
有没有办法读取不包括空成员的范围?
解决方案
您可以使用为每个调用返回的回调进行过滤true
(也可以获取虚假元素)。这种方法不访问稀疏元素。
const array = [];
array[3] = 'content3';
array[4] = undefined;
array[6] = 0;
const result = array.filter(_ => true);
console.log(result);
通过为范围获取一个对象和一个数组,您可以过滤键并映射值。
const data = {};
data[3] = 'content3';
data[4] = undefined;
data[6] = 0;
data[7] = 'content7';
const range = [3, 6];
const result = Object
.keys(data)
.filter(k => k >= range[0] && k <= range[1])
.map(k => data[k]);
console.log(result);
推荐阅读
- jenkins-jira-trigger - Jira 触发器记录器位置
- postgresql - 未知 postgres 进程的服务器负载峰值
- php - 如何按值和类型合并数组
- javascript - 如何在javascript中获取视频标签的音频输出音量
- reactjs - 如何在 Chart js 2 折线图中的点上显示 X 和 Y 标签
- javascript - 无法使用样式化组件 javascript 抓取网站
- kubernetes - 为什么 kubectl 删除了命令“滚动更新”?
- c++ - 停止伺服while循环
- angular - 使用 google 进行 Angular 登录需要发送 response_type=code(不能使用 angularx-social-login 设置 response_type=code)
- android-studio - 修改时如何强制Android Studio重建“未使用”的类