数组助手 javascript 练习
Array Helpers javascript exercise
我正在尝试解决 Javascript 中关于数组助手的练习,这是我的代码。
var numbers = [1, 2, 3, 4, 5];
function square() {
var arraySquare = [];
for (i = 0; i < numbers.length; i++) {
arraySquare[i] = numbers[i] * numbers[i];
arraySquare.push(arraySquare[i]);
}
return arraySquare;
}
console.log(square());
function cube() {
var arrayCube = [];
for (i = 0; i < numbers.length; i++) {
arrayCube[i] = numbers[i] * numbers[i] * numbers[i];
arrayCube.push(arrayCube[i]);
}
return arrayCube;
}
console.log(cube());
function arrayAverage() {
var sum = 0;
var average = 0;
if (numbers === []) {
return NaN;
}
else {
for (i = 0; i < numbers.length; i++) {
sum = sum + numbers[i];
}
average = sum / i;
}
return average;
}
console.log(arrayAverage());
function arraySum() {
var sum = 0;
for (i = 0; i < numbers.length; i++) {
sum = sum + numbers[i];
}
return sum;
}
console.log(arraySum());
function even() {
var arrayEven = [];
for (i = 0; i < numbers.length; i++) {
if (numbers[i] % 2 === 0) {
arrayEven.push(numbers[i]);
}
}
return arrayEven;
}
console.log(even());
function odd() {
var arrayOdd = [];
for (i = 0; i < numbers.length; i++) {
if (numbers[i] % 2 !== 0) {
arrayOdd.push(numbers[i]);
}
}
return arrayOdd;
}
console.log(odd());
出于某种原因,square() 和 cube() 函数将新数组中的最后一个元素压入两次。您知道为什么会发生这种情况吗?
除此之外,代码似乎工作得很好。如果您发现代码中有任何其他问题,请提出来!
任何帮助将不胜感激!
因为您正在设置第 i
个元素,然后您将一个新值推入数组:
arrayCube[i] = numbers[i] * numbers[i] * numbers[i];
arrayCube.push(arrayCube[i]);
你应该这样做:
arrayCube.push(numbers[i] * numbers[i] * numbers[i]);
问题出在这里
arraySquare[i] = numbers[i] * numbers[i];
arraySquare.push(arraySquare[i]);
您正在更新数组两次,您的函数不只是添加一个额外的最终数字,而是每次添加两个数字,一个在 i
和一个在 i+1
, i+1
中的一个在下一次迭代中被覆盖,这就是为什么只有最后一个保留下来的原因。
你应该只保留第一行
已检查 Square 函数。它对我有用。
var numbers = [1, 2, 3, 4, 5];
function square() {
var arraySquare = []; var a ;
for (i = 0; i < numbers.length; i++) {
a = numbers[i] * numbers[i];
arraySquare.push(a);
}
return arraySquare;
}
console.log(square());
希望这对这两个功能都有效。
此致,
埃比 J
我正在尝试解决 Javascript 中关于数组助手的练习,这是我的代码。
var numbers = [1, 2, 3, 4, 5];
function square() {
var arraySquare = [];
for (i = 0; i < numbers.length; i++) {
arraySquare[i] = numbers[i] * numbers[i];
arraySquare.push(arraySquare[i]);
}
return arraySquare;
}
console.log(square());
function cube() {
var arrayCube = [];
for (i = 0; i < numbers.length; i++) {
arrayCube[i] = numbers[i] * numbers[i] * numbers[i];
arrayCube.push(arrayCube[i]);
}
return arrayCube;
}
console.log(cube());
function arrayAverage() {
var sum = 0;
var average = 0;
if (numbers === []) {
return NaN;
}
else {
for (i = 0; i < numbers.length; i++) {
sum = sum + numbers[i];
}
average = sum / i;
}
return average;
}
console.log(arrayAverage());
function arraySum() {
var sum = 0;
for (i = 0; i < numbers.length; i++) {
sum = sum + numbers[i];
}
return sum;
}
console.log(arraySum());
function even() {
var arrayEven = [];
for (i = 0; i < numbers.length; i++) {
if (numbers[i] % 2 === 0) {
arrayEven.push(numbers[i]);
}
}
return arrayEven;
}
console.log(even());
function odd() {
var arrayOdd = [];
for (i = 0; i < numbers.length; i++) {
if (numbers[i] % 2 !== 0) {
arrayOdd.push(numbers[i]);
}
}
return arrayOdd;
}
console.log(odd());
出于某种原因,square() 和 cube() 函数将新数组中的最后一个元素压入两次。您知道为什么会发生这种情况吗? 除此之外,代码似乎工作得很好。如果您发现代码中有任何其他问题,请提出来!
任何帮助将不胜感激!
因为您正在设置第 i
个元素,然后您将一个新值推入数组:
arrayCube[i] = numbers[i] * numbers[i] * numbers[i];
arrayCube.push(arrayCube[i]);
你应该这样做:
arrayCube.push(numbers[i] * numbers[i] * numbers[i]);
问题出在这里
arraySquare[i] = numbers[i] * numbers[i];
arraySquare.push(arraySquare[i]);
您正在更新数组两次,您的函数不只是添加一个额外的最终数字,而是每次添加两个数字,一个在 i
和一个在 i+1
, i+1
中的一个在下一次迭代中被覆盖,这就是为什么只有最后一个保留下来的原因。
你应该只保留第一行
已检查 Square 函数。它对我有用。
var numbers = [1, 2, 3, 4, 5];
function square() {
var arraySquare = []; var a ;
for (i = 0; i < numbers.length; i++) {
a = numbers[i] * numbers[i];
arraySquare.push(a);
}
return arraySquare;
}
console.log(square());
希望这对这两个功能都有效。
此致, 埃比 J