写一个indexToString函数。这个函数应该:1. 接受一个数组作为参数2. 创建并以字符串形式返回所有传入数组元素的新数组3.每个字符串的格式应该是这样的:" [index] is [element at index] "这是我得到的错误:返回传入数组元素的数组作为指定元素索引的字符串期望未定义深度等于['0是1','1是2','2是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
。
其次,你应该返回一个字符串数组,正如你的测试失败消息所告诉的;而不是打印到控制台。
编辑:第三,斯宾塞说了什么。:)用i
代替index
,用array[i]
代替elementAtIndex
。
你想在循环外从一个空数组开始,然后把你构造的每个字符串都压入其中;然后在循环后返回该数组。
或者你可以用"new" JavaScript:
var indexToString = array => array.map((e, i) => `${i} is ${e}`)
您应该对您的代码进行更多的反思,到目前为止这是相当无意义的。
让我们分解这个问题来确定应该做什么:
编写一个名为indexToString的函数。这个函数应该:
接受数组作为参数
创建并返回一个新的数组作为字符串
每个字符串应该像这样格式化: " [index] is [element at index] "
:
-
创建一个名为indexToString的函数,该函数体包含代码,如前所述。
-
在初始化部分 while之前,您应该创建一个将被填充的新空数组,并声明一个名为index的整数,例如初始化为0,将用于循环遍历原始数组。(提示:var new_array = [];创建并使用new_array.push(elem);添加一个元素
-
在while中,您应该在新数组的末尾推送一个按如下方式构建的字符串:"["+index+"]是["+array[index]+"]"你应该增加你的索引。你循环
while(index < array.length)
.
最后,您可以返回新数组 !
祝你学习编程好运!
如果数组长度为10,则返回数组[10]。
当您进入最后一个循环时,i
变得等于array.length
,因此在此之后array[i]
未定义。但这可能不是你想要的。你想要返回整个数组。
var indexToString = function(array){
var new_array = [];
var i = 0;
while(i < array.length){
new_array[i] = i + " is " + array[i];
i++;
}
return new_array;
};
console.log(indexToString([1,2,3]));