我有一个值数组,我想创建另一个数组,我可以根据这些值定义一个值。例如:
我的阵列:
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;
但此刻它只带回了灰色。我认为我没有正确定位数组项的价值
编辑:没想到这么多评论等如此之快!我试图证明我的问题,但没有提供真实的内容,在这个过程中搞砸了我的一些例子,道歉。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所解释的那样。
答案 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循环,因为它们看起来更好一些,我也改变了它,所以你要推动它数组的值而不是将它们作为字符串附加。
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;