学习 While 循环。无法弄清楚我的代码中缺少什么。
编写一个名为 indexToString 的函数。此函数应该: 1. 将数组作为参数 2. 创建并返回一个包含所有传递的数组元素的新数组作为字符串 3. 每个字符串的格式应如下:“[index] 是 [element at index]” 这是我收到的错误:返回一个传入数组元素的数组作为字符串,其中指定了元素索引 预期未定义为深度相等 ['0 is 1', '1 is 2', '2 is 3' ]
这是我的代码:
var indexToString = function(array){
index = 0;
elementAtIndex = 0;
var i = 0;
while(i < array.length){
console.log(index + " is " + elementAtIndex);
i++
}
return array[i];
};
两个
三个错误。
首先,当
i
不再小于
array.length
时,while 循环将退出;第一个这样的数字是
array.length
。这意味着,在循环结束时,
array[i]
是
array[array.length]
,它刚好在数组之外,因此
undefined
。
其次,您应该返回一个字符串数组,如测试失败消息所示;而不是将它们打印到控制台。
编辑:第三,Spencer 所说的。:) 使用
i
代替
index
,使用
array[i]
代替
elementAtIndex
。
您想从循环外的一个空数组开始,并将您构造的每个字符串推入其中;然后在循环后返回该数组。
或者您可以使用“new”JavaScript 来执行此操作:
var indexToString = array => array.map((e, i) => `${i} is ${e}`)
您应该多反思一下您的代码,到目前为止,它完全是胡说八道。
让我们分解问题以确定应该做什么:
Write a function called indexToString . This function should:
Take an array as an argument
Create and return a new array of all passed array elements as strings
Each strings should be formatted like so: “[index] is [element at index]”
所以:
-
您创建一个名为 indexToString 的函数,其主体包含代码,就像您所做的那样。
-
在 while 之前的 初始化部分 中,您应该 创建一个将要填充的新空数组 ,并声明一个名为 index 的 整数 ,例如初始化为 0,它将用于循环遍历原始数组。 (提示:var new_array = []; 创建,并使用 new_array.push( elem ); 附加元素)
-
在 while 中,您应该在 new array 末尾 push 一个字符串,如下所示:“["+index+"] 是 ["+array[index]+"]” 并且您应该增加索引。您循环
while(index < array.length)
。
最后,您可以返回 new array !
祝您学习编程顺利!
如果数组长度为 10,则该函数将返回数组 [10]。这是一个数组绑定。