我有一项任务,使用for each函数对数组执行某些特定任务。我有一切工作,除了最后一个 - 我很接近,但返回的第一个和最后一个值是不正确的。
在isNextGreater函数中,我需要获取数组中元素的值,并将其与下一个元素进行比较。如果元素的值是<我需要返回-1的下一个元素的值。如果值更大,我需要返回1.最后一个元素需要返回其原始值,因为没有什么可以比较它。
当函数运行时,它返回[1]和[2]的正确值,但[0]返回其原始值,[3]返回1.
我知道我很亲密但却缺少一些东西!有人能给我一个关于我在看什么的暗示吗?
谢谢!
<!doctype html>
<html>
<head>
<title> Functions: forEach </title>
<meta charset="utf-8">
<script>
// the zeros array
var zeros = [0, 0, 0, 0];
// your code here
//Function to display the contents of the Array.
function showArray (value, index, theArray) {
console.log("Array[" + index + "]" + ":" + value);
}
//Function to assign random values to the passed array
function makeArrayRandom(value, index, theArray) {
var maxSize = 5;
var randomNum = Math.floor(Math.random() * maxSize);
theArray[index] = randomNum;
console.log("Array[" + index + "]" + ":" + randomNum);
}
//Function to create a copy of the random numbers array
function map(value, index, theArray) {
var arrayCopy = [];
arrayCopy[index] = theArray[index];
console.log("Array[" + index + "]" + ":" + value);
return arrayCopy;
}
//Function to compare the values of the array
function isNextGreater(value, index, theArray) {
var size = theArray.length
for (var i = 0; i < size; i++) {
if (theArray[i] < theArray[i+1]){
theArray[i] = -1;
} else {
theArray[i] = 1;
}
}
console.log("Array[" + index + "]" + ":" + value);
}
//Use ForEach to pass Array data to functions.
console.log("Display the Array:");
zeros.forEach(showArray);
console.log("Random Array:");
zeros.forEach(makeArrayRandom);
console.log("Copy of Zeros:");
zeros.forEach(map);
console.log("Is Next Greater:");
zeros.forEach(isNextGreater);
</script>
</head>
<body>
</body>
答案 0 :(得分:0)
将您的isNextGreater
功能更改为此功能,您就完成了。
function isNextGreater(value, index, theArray) {
var size = theArray.length
if (index < size - 1){
if (value < theArray[index+1] ){
value = -1;
} else {
value = 1;
}
}else{
value = value;
}
console.log("Array[" + index + "]" + ":" + value);
}
Here是检查结果的小提琴(结果显示在控制台上)