2018-10-10 22:03:03 +00:00
|
|
|
|
---
|
|
|
|
|
id: 56105e7b514f539506016a5e
|
2021-03-15 03:20:39 +00:00
|
|
|
|
title: 使用 For 循环反向遍历数组
|
2018-10-10 22:03:03 +00:00
|
|
|
|
challengeType: 1
|
2020-04-29 10:29:13 +00:00
|
|
|
|
videoUrl: 'https://scrimba.com/c/c2R6BHa'
|
|
|
|
|
forumTopicId: 16808
|
2021-01-13 02:31:00 +00:00
|
|
|
|
dashedName: count-backwards-with-a-for-loop
|
2018-10-10 22:03:03 +00:00
|
|
|
|
---
|
|
|
|
|
|
2020-12-16 07:37:30 +00:00
|
|
|
|
# --description--
|
|
|
|
|
|
2021-03-15 03:20:39 +00:00
|
|
|
|
只要我们定义好合适的条件,for 循环也可以反向遍历。
|
2020-12-16 07:37:30 +00:00
|
|
|
|
|
2021-03-15 03:20:39 +00:00
|
|
|
|
为了让每次递减 2,我们需要改变 initialization、condition 和 final-expression。
|
2020-12-16 07:37:30 +00:00
|
|
|
|
|
2021-03-15 03:20:39 +00:00
|
|
|
|
设置 `i = 10`,并且当 `i > 0` 的时候才继续循环。 我们使用 `i -= 2` 来让 `i` 每次循环递减 2。
|
2020-04-29 10:29:13 +00:00
|
|
|
|
|
|
|
|
|
```js
|
|
|
|
|
var ourArray = [];
|
2021-02-06 04:42:36 +00:00
|
|
|
|
for (var i = 10; i > 0; i -= 2) {
|
2020-04-29 10:29:13 +00:00
|
|
|
|
ourArray.push(i);
|
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
|
2021-03-15 03:20:39 +00:00
|
|
|
|
循环结束后,`ourArray` 的值为 `[10,8,6,4,2]`。 让我们改变 initialization 和 final-expression,这样我们就可以按照奇数从后往前两两倒着数。
|
2018-10-10 22:03:03 +00:00
|
|
|
|
|
2020-12-16 07:37:30 +00:00
|
|
|
|
# --instructions--
|
2018-10-10 22:03:03 +00:00
|
|
|
|
|
2021-03-15 03:20:39 +00:00
|
|
|
|
使用一个 `for`循环,把从 9 到 1 的奇数添加到 `myArray`。
|
2018-10-10 22:03:03 +00:00
|
|
|
|
|
2020-12-16 07:37:30 +00:00
|
|
|
|
# --hints--
|
2018-10-10 22:03:03 +00:00
|
|
|
|
|
2021-03-15 03:20:39 +00:00
|
|
|
|
应该使用 `for` 循环。
|
2018-10-10 22:03:03 +00:00
|
|
|
|
|
|
|
|
|
```js
|
2021-02-06 04:42:36 +00:00
|
|
|
|
assert(/for\s*\([^)]+?\)/.test(code));
|
2018-10-10 22:03:03 +00:00
|
|
|
|
```
|
|
|
|
|
|
2021-03-15 03:20:39 +00:00
|
|
|
|
应该使用数组方法 `push`。
|
2018-10-10 22:03:03 +00:00
|
|
|
|
|
|
|
|
|
```js
|
2020-12-16 07:37:30 +00:00
|
|
|
|
assert(code.match(/myArray.push/));
|
2018-10-10 22:03:03 +00:00
|
|
|
|
```
|
|
|
|
|
|
2021-03-15 03:20:39 +00:00
|
|
|
|
`myArray` 应该等于 `[9,7,5,3,1]`。
|
2020-04-29 10:29:13 +00:00
|
|
|
|
|
2018-10-10 22:03:03 +00:00
|
|
|
|
```js
|
2020-12-16 07:37:30 +00:00
|
|
|
|
assert.deepEqual(myArray, [9, 7, 5, 3, 1]);
|
2018-10-10 22:03:03 +00:00
|
|
|
|
```
|
2020-04-29 10:29:13 +00:00
|
|
|
|
|
2021-01-13 02:31:00 +00:00
|
|
|
|
# --seed--
|
|
|
|
|
|
|
|
|
|
## --after-user-code--
|
|
|
|
|
|
|
|
|
|
```js
|
|
|
|
|
if(typeof myArray !== "undefined"){(function(){return myArray;})();}
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## --seed-contents--
|
|
|
|
|
|
|
|
|
|
```js
|
|
|
|
|
// Setup
|
|
|
|
|
var myArray = [];
|
|
|
|
|
|
|
|
|
|
// Only change code below this line
|
|
|
|
|
```
|
|
|
|
|
|
2020-12-16 07:37:30 +00:00
|
|
|
|
# --solutions--
|
|
|
|
|
|
2021-01-13 02:31:00 +00:00
|
|
|
|
```js
|
|
|
|
|
var myArray = [];
|
|
|
|
|
for (var i = 9; i > 0; i -= 2) {
|
|
|
|
|
myArray.push(i);
|
|
|
|
|
}
|
|
|
|
|
```
|