定位数组项的值

时间:2018-04-24 14:22:22

标签: javascript arrays

我有一个值数组,我想创建另一个数组,我可以根据这些值定义一个值。例如:

我的阵列:

var val = [1, 2, 3, 4]

我想要的新阵列:

[red, green, blue, black]

我尝试过像这样的for循环:



var val = [1, 2, 3, 4]
var color = [];

for (var i = 0; i < val.length; i++) {
  if (val < 200) {
    color += "green";
  } else if (val.value > '200') {
    color += "blue";
  } else {
    color += "grey"
  }
}

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

但此刻它只带回了灰色。我认为我没有正确定位数组项的价值

编辑:没想到这么多评论等如此之快!我试图证明我的问题,但没有提供真实的内容,在这个过程中搞砸了我的一些例子,道歉。

Adam感谢你的回答,我没有意识到我错过了[i]内部循环。我将循环改为此,现在正在运行:

        for (var i = 0; i < val.length; i++){
            if (val[i] < 200) {
                color+="green";
            }else if (val[i] < 300){
                color+="blue";
            }else{
                color+="grey"
            }
        }

编辑2,它在某种程度上有效。虽然为了让它在一个数组中,我使用了push方法,如31piy所解释的那样。

5 个答案:

答案 0 :(得分:2)

您永远不会使用您在循环中定义的索引。

var color = [];
var val = [1, 2, 3, 4]
for (var i = 0; i < val.length; i++){
    if (val[i] < 200) {
        color+="green";
    }else if (val[i] > 200){
        color+="blue";
    }else{
        color+="grey"
    }
}
console.log(color);

这是解决访问循环问题的解决方案,原始问题似乎要求解决。您需要解决的代码中还有其他问题。

答案 1 :(得分:1)

如果要向数组中添加项目,最有可能使用push方法。另外,您没有使用i来获取数组的索引项。

var val = [1, 2, 3, 4];
var color = [];

for (var i = 0; i < val.length; i++) {
  if (val[i] < 200) {
    color.push("green");
  } else if (val[i] > '200') {
    color.push("blue");
  } else {
    color.push("grey");
  }
}

console.log(color);

答案 2 :(得分:0)

在迭代数组时,您需要直接访问数组的元素val[i] < 200而不是数组本身val < 200

目标数组color相同,您需要将值分配给数组的预期索引,即:color[i]虽然color.push()也有效。

您的color数组现在只包含green,因为所有值都低于200。

我更新了所有条件的源数组。

var val = [199, 200, 201]
var color = [];

for (var i = 0; i < val.length; i++) {
  if (val[i] < 200) {
    color[i] = "green";
  } else if (val[i] > 200) {
    color[i] = "blue";
  } else {
    color[i] = "grey"
  }
}

console.log(color);

如果您愿意,可以使用Ternary Operator来缩短此项,并且可以使用.push()以及其他建议。

var val = [199, 200, 201]
var colors = [];
var value;

for (var i = 0; i < val.length; i++) {
  value = val[i];
  color = value < 200 ? 'green' : value > 200 ? 'blue' : 'grey';

  colors.push(color);
}

console.log(colors);

答案 3 :(得分:0)

如果我正确理解您的问题,您似乎需要使用.push方法。您还需要使用数组的索引来引用值,如下所示:

var val = [1, 2, 3, 4];
var color = [];

for (var i = 0; i < val.length; i++) {
  if (val[i] < 200) {
    color.push("green");
  } else if (val[i] > '200') {
    color.push("blue");
  } else {
    color.push("grey");
  }
}

console.log(color);

这应该解决正确访问数组和将值推入新数组的问题。

答案 4 :(得分:0)

我已经改变了一些代码,我使用了for of循环,因为它们看起来更好一些,我也改变了它,所以你要推动它数组的值而不是将它们作为字符串附加。

&#13;
&#13;
const vals = [100, 200, 300];

let color = [];
for (let val of vals) {
  if (val < 200) {
    color.push("green");
  } else if (val > 200) {
    color.push("blue");
  } else {
    color.push("grey");
  }
}
console.log(color);
&#13;
&#13;
&#13;