循环遍历数组并更改值

时间:2018-01-31 13:12:13

标签: javascript

我正在尝试遍历一个数组,如果一个元素等于一组值,我想更新该元素。例如:



var arr = ["apple", "orange", "banana", "kiwi"];
for(var x= 1; x < arr.length; x++) {
  if(arr[x] === kiwi" || "banana") {
    arr[x] = arr[x] + "1";
  }
}
&#13;
&#13;
&#13;

预期输出

arr = ["apple", "orange", "banana1", "kiwi1"];

我似乎无法做到这一点。

编辑:对于错误复制的代码的错误,我已经修复了错字。

4 个答案:

答案 0 :(得分:3)

这是您的代码:

var arr = ["apple", "orange", "banana", "kiwi"];
for(x = i; x < arr.length; x++) {
  if(arr[x] === kiwi" || "banana") {
    arr[x] = arr[x] + "1";
  }
}

让我们分析您的方法:

您正在使用未声明的变量i

for(x = i; x < arr.length; x++) {
        ^

您没有以正确的方式使用逻辑运算符

if(arr[x] === kiwi" || "banana")
                     ^

此代码段中包含代码中的修复:

&#13;
&#13;
var arr = ["apple", "orange", "banana", "kiwi"];
// most of the world use "i" as index in an array:
for(var i = 0/*Initialized with 0*/; i < arr.length; i++) {
    // Now the code is using two side comparison using OR (||) operator.
    if(arr[i] === "kiwi" || arr[i] === "banana") {
        arr[i] = arr[i] + "1";
    }
}

console.log(arr);
&#13;
&#13;
&#13;

请参阅?现在它正在运用你的逻辑!

答案 1 :(得分:1)

首先,“bananna”永远不会是false,所以arr[x] === kiwi" || "banana"永远都是真的。在英语中,您可能会说“如果项目等于猕猴桃或香蕉”,但在代码中您需要更具体:“如果项目等于猕猴桃或项目等于香蕉”(arr[x] === "kiwi" || arr[x] === "banana")。

如果要检查组,则更容易创建一个数组并检查该项是否在数组中。 if(~["kiwi","banana"].indexOf(arr[x]))在英语中,这说:“如果该组中存在项目。”如果项目不存在,indexOf()返回-1,但是使用bitwise NOT (~),-1变为零,这是假y。如果这太难理解,你可以改为if(["kiwi","banana"].indexOf(arr[x]) > -1)

还有一件事......确保你正在检查控制台是否有错误。除非你真的熟悉控制台,否则你不会走得太远。它将告诉您有关缺少引号和您在代码中遇到的其他问题的事情。

祝你好运。

答案 2 :(得分:0)

试试这个

var arr = ["apple", "orange", "banana", "kiwi"];

for(var i = 0; i < arr.length; i++) {
  if(arr[i] === "kiwi" || arr[i] === "banana") {
    arr[i] = arr[i] + "1";
  }
}

console.log(arr);

有两个错误,首先没有声明xi,然后您忘记了if条件中的引号,最后您没有真正比较当前数组价值为banana,这就是所有人。

答案 3 :(得分:0)

你犯了一堆错误:

1:"缺少kiwi""kiwi"应该是arr[x] === kiwi" || "banana",因为它是一个字符串。

2:|| "banana"此处的问题是arr[x] === "kiwi" || arr[x] === "banana",它始终返回true,应为for(var x= 1; x < arr.length; x++)

3:var x= 1这不反映,但var x= 0会跳过数组中的第一项,因此它应为var arr = ["apple", "orange", "banana", "kiwi"]; for(var x= 0; x < arr.length; x++) { if(arr[x] === "kiwi" || arr[x] === "banana") { arr[x] = arr[x] + "1"; } } console.log(JSON.stringify(arr))

更新了代码段:

{{1}}