开发者问题收集

学习 While 循环。无法弄清楚我的代码中缺少什么。

2016-10-18
79

编写一个名为 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];
};
3个回答

两个 三个错误。

首先,当 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}`)
Amadan
2016-10-18

您应该多反思一下您的代码,到目前为止,它完全是胡说八道。

让我们分解问题以确定应该做什么:

Write a function called indexToString . This function should:

  1. Take an array as an argument

  2. Create and return a new array of all passed array elements as strings

  3. 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

祝您学习编程顺利!

Louis Durand
2016-10-18

如果数组长度为 10,则该函数将返回数组 [10]。这是一个数组绑定。

李德康
2016-10-18