在Javascript中遍历数组

3

我是一名 JavaScript 新手。我正在尝试练习一些样例 JavaScript 问题。当涉及到遍历数组的问题时,我有点卡住了。有人能指导我一下吗?

我想把 oldArray 中的值加上 5,并存储在 newArray 中。

var oldArray = [12, 45, 6, 23, 19, 20, 20, 15, 30, 42];

var newArray = [];

function plusFive(oldArray[i]) {

    for (var i = 0; i < oldArray.length; i++) {
        newArray.push(oldArray[i]) + 5) };
    }
}

请打开您的控制台并查看出现的错误消息。 - user663031
你好。这是我输入gladsocc建议的代码后收到的错误:TypeError at line NaN:undefined is not an object (evaluating 'oldArray.length') - Leia_Organa
这意味着oldArray未定义。我假设您在参数列表中将oldArrray[i]更改为oldArray。那么这个错误消息就意味着您没有将oldArray传递给函数。您需要调用它作为plusFive(oldArray)。注意:函数外部和内部的oldArray是两个不同的东西! - user663031
2个回答

8

代码中的错误是在推送语句行中有多余的括号和闭合大括号,只需将它们移除即可。此外,在这里设置函数参数是没有必要的,因为函数内部可以访问两个数组,如果您想传递参数,则需要将其更改为function plusFive(oldArray),并使用数组作为参数调用该函数。

newArray.push(oldArray[i] + 5) ;
//-----------------------^----^-

示例代码:

var newArray = [];

function plusFive(oldArray) {
  for (var i = 0; i < oldArray.length; i++) {
    newArray.push(oldArray[i] + 5)
  };
}


plusFive([1,2,4,6,32,44]);

document.write(
  'New array :' +
  '<pre>' + JSON.stringify(newArray) + '</pre>'
);


不带数组参数的函数

var oldArray = [12, 45, 6, 23, 19, 20, 20, 15, 30, 42];

var newArray = [];

function plusFive() {
  for (var i = 0; i < oldArray.length; i++) {
    newArray.push(oldArray[i] + 5)
  };
}


plusFive();

document.write(
  'Old array :' +
  '<pre>' + JSON.stringify(oldArray) + '</pre>' +
  'New array :' +
  '<pre>' + JSON.stringify(newArray) + '</pre>'
);


但是更好的方法是使用map()从现有数组创建一个修改后的新数组。

var oldArray = [12, 45, 6, 23, 19, 20, 20, 15, 30, 42];

var newArray = oldArray.map(function(v) {
  return v + 5;
});

document.write(
  'Old array :' +
  '<pre>' + JSON.stringify(oldArray) + '</pre>' +
  'New array :' +
  '<pre>' + JSON.stringify(newArray) + '</pre>'
);


1
虽然这段代码好得多,但我认为它并没有真正帮助OP理解for循环和迭代。 - apscience
1
@gladsocc:你已经得到了关于for循环中错误的答案,我添加了另一种更好的替代方式。 - Pranav C Balan
谢谢你的回答。不幸的是,我是一个新手,还没有学会如何实现map()。 - Leia_Organa
您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - Pranav C Balan

-1

你的代码几乎正确,但是你关闭括号不正确,并且需要正确命名函数参数。对于函数参数,你只是提供标签。你不能将变量命名为something[a],而参数也不能被命名为something[a]

尝试:

var oldArray = [12, 45, 6, 23, 19, 20, 20, 15, 30, 42];

var newArray = [];

function plusFive(oldArray) {
    for (var i = 0; i < oldArray.length; i++) {
        newArray.push(oldArray[i] + 5)
    }
}

plusFive();

谢谢!但是,我尝试在repl.it上运行代码,但出现了这个错误信息:SyntaxError: Unexpected token '['. Expected a ')' or a ',' after a parameter declaration. 您有没有推荐一个好的网站可以运行原始Javascript代码? - Leia_Organa
1
当你调用 plusFive 函数时,难道不需要传递 oldArray 吗? - user663031
你好。这是我在使用这段代码时收到的错误:TypeError at line NaN: undefined is not an object (evaluating 'oldArray.length')。 - Leia_Organa
1
你需要传递 oldArray,或者移除参数。参数中的 oldArray 正在创建一个新的空(未定义)引用,而不是采用你创建的 oldArray 变量。像 JavaScript 这样的弱类型语言由于这样的事情而难以学习编程。 - Zach

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接