用js把稀疏数组变为不稀疏数组。
时间: 2023-12-10 16:39:45 浏览: 100
可以使用JavaScript中的数组方法`filter`和`map`来将稀疏数组转换为不稀疏数组。下面是一个例子:
```javascript
var sparseArr = [1, , , 2, , , , 3];
var denseArr = sparseArr.filter(function() {return true;}).map(function(x) {return x || 0;});
console.log(denseArr);
```
输出结果为:
```
[1, 0, 0, 2, 0, 0, 0, 3]
```
这里首先使用`filter`将稀疏数组中的所有元素筛选出来,得到一个密集数组,然后使用`map`将该数组中的`undefined`元素转换为0。
相关问题
使用js完成把稀疏数组变为不稀疏数组
可以使用 JavaScript 中的 `Array.prototype.filter()` 方法来将稀疏数组变为不稀疏数组。
例如,假设有以下稀疏数组:
```js
const sparseArray = [1, , 2, , , 3];
```
可以使用 `filter()` 方法过滤掉数组中的 `undefined` 或者未定义的元素,生成一个不稀疏的数组:
```js
const denseArray = sparseArray.filter(() => true);
console.log(denseArray); // [1, 2, 3]
```
这里的 `() => true` 是一个回调函数,它会对数组中的每一个元素调用一次,如果返回值为 `true`,则保留该元素,否则过滤掉该元素。因为回调函数始终返回 `true`,所以 `filter()` 方法不会过滤掉任何元素,从而将稀疏数组变为了不稀疏数组。
另外,也可以使用 `Array.from()` 方法将稀疏数组转换为密集数组:
```js
const denseArray = Array.from(sparseArray);
console.log(denseArray); // [1, undefined, 2, undefined, undefined, 3]
```
但是需要注意,这种方式生成的数组仍然是稀疏数组,只不过每个未定义的元素被转换成了 `undefined`。
阅读全文