首页 > 解决方案 > 从数组中获取一系列现有成员的最快方法是什么?

问题描述

我们有一个像这样填充的数组:

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"]

有没有办法读取不包括空成员的范围?

标签: javascriptarraysperformancesequencesparse-matrix

解决方案


您可以使用为每个调用返回的回调进行过滤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);


推荐阅读