很抱歉我的阵列很长但很简单。如何访问此数组的对象?
例如,我的数组的某些部分(用于构造网格)具有分配给它们的字母“P”。如果我想在If statement
中删除那个字母“P”(所以将字母设置为“”),我该如何访问? E.G
If (someVar == thisVar) {
// some way to set a certain letter to ""
}
数组:
var map = [
[
{
color: "g",
letter: ""
},
{
color: "g",
letter: ""
},
{
color: "w",
letter: "P"
},
{
color: "w",
letter: ""
},
{
color: "w",
letter: ""
},
{
color: "w",
letter: ""
},
{
color: "g",
letter: ""
},
{
color: "g",
letter: ""
},
{
color: "w",
letter: ""
},
{
color: "w",
letter: ""
}],
[ {
color: "g",
letter: ""
},
{
color: "b",
letter: ""
},
{
color: "b",
letter: ""
},
{
color: "w",
letter: ""
},
{
color: "w",
letter: ""
},
{
color: "w",
letter: ""
},
{
color: "g",
letter: ""
},
{
color: "g",
letter: ""
},
{
color: "w",
letter: ""
},
{
color: "w",
letter: ""
}
],
[ {
color: "b",
letter: ""
},
{
color: "b",
letter: ""
},
{
color: "b",
letter: ""
},
{
color: "g",
letter: ""
},
{
color: "g",
letter: ""
},
{
color: "w",
letter: ""
},
{
color: "g",
letter: ""
},
{
color: "g",
letter: "P"
},
{
color: "w",
letter: ""
},
{
color: "w",
letter: ""
}
],
//SEPERATION
[ {
color: "w",
letter: ""
},
{
color: "b",
letter: ""
},
{
color: "g",
letter: ""
},
{
color: "g",
letter: ""
},
{
color: "g",
letter: ""
},
{
color: "g",
letter: ""
},
{
color: "g",
letter: "B"
},
{
color: "g",
letter: ""
},
{
color: "g",
letter: ""
},
{
color: "g",
letter: ""
}
],
// SEPERATION
[ {
color: "b",
letter: ""
},
{
color: "b",
letter: ""
},
{
color: "g",
letter: ""
},
{
color: "w",
letter: ""
},
{
color: "g",
letter: ""
},
{
color: "w",
letter: ""
},
{
color: "b",
letter: ""
},
{
color: "b",
letter: ""
},
{
color: "g",
letter: ""
},
{
color: "g",
letter: ""
}
],
// SEPERATION
[ {
color: "b",
letter: ""
},
{
color: "b",
letter: ""
},
{
color: "b",
letter: ""
},
{
color: "w",
letter: ""
},
{
color: "b",
letter: ""
},
{
color: "b",
letter: ""
},
{
color: "b",
letter: ""
},
{
color: "b",
letter: ""
},
{
color: "w",
letter: ""
},
{
color: "g",
letter: ""
}
],
// SEPERATION
[ {
color: "b",
letter: ""
},
{
color: "b",
letter: ""
},
{
color: "b",
letter: ""
},
{
color: "b",
letter: ""
},
{
color: "b",
letter: "P"
},
{
color: "w",
letter: ""
},
{
color: "w",
letter: ""
},
{
color: "w",
letter: ""
},
{
color: "g",
letter: ""
},
{
color: "g",
letter: "P"
}
],
// SEPERATION
[ {
color: "g",
letter: ""
},
{
color: "b",
letter: ""
},
{
color: "b",
letter: ""
},
{
color: "b",
letter: ""
},
{
color: "w",
letter: ""
},
{
color: "w",
letter: ""
},
{
color: "w",
letter: ""
},
{
color: "w",
letter: ""
},
{
color: "g",
letter: ""
},
{
color: "w",
letter: ""
}
],
// SEPERATION
[ {
color: "g",
letter: ""
},
{
color: "g",
letter: ""
},
{
color: "g",
letter: ""
},
{
color: "g",
letter: ""
},
{
color: "w",
letter: ""
},
{
color: "g",
letter: ""
},
{
color: "g",
letter: ""
},
{
color: "w",
letter: ""
},
{
color: "w",
letter: ""
},
{
color: "w",
letter: ""
}
],
// SEPERATION
[ {
color: "g",
letter: ""
},
{
color: "g",
letter: ""
},
{
color: "g",
letter: ""
},
{
color: "g",
letter: ""
},
{
color: "g",
letter: ""
},
{
color: "g",
letter: ""
},
{
color: "g",
letter: ""
},
{
color: "g",
letter: ""
},
{
color: "w",
letter: ""
},
{
color: "b",
letter: ""
}
]
];
答案 0 :(得分:3)
您有一个包含包含对象的数组的数组。因此,您索引到第一个数组以获取所需的子数组,然后索引到该数组以获取该对象。 E.g:
var obj = map[0][0];
console.log(obj.color); // "g"
它获得了第一个子阵列,以及其中的第一个对象。 [0][1]
获取第一个子阵列的第二个对象,依此类推。 [1][0]
获取第二个子阵列的第一个对象。等
如果我想在If语句中删除那个字母“P”(所以将字母设置为“”),我该如何访问?
JavaScript中的if
,而不是If
。
要做到这一点,首先你必须找到包含该字母的子数组和条目,这意味着循环。使用letter: "p"
找到子对象和对象的索引后,您可以修改该对象(删除letter
属性,将其设置为其他内容等),或者使用{{1}在子阵列上完全从中删除该对象。
答案 1 :(得分:2)
让我通过解释如何来解决这个问题,我将在这里解决如何访问元素的问题。首先尝试输出地图:
alert(map);
这会告诉你它是一个数组。好吧,让我们检查那个数组中的第0个元素。我们选择零,因为我们知道数组通常从该数字开始索引:
alert(map[0]);
这本身就是一个数组,所以让我们尝试将它作为数组处理,使用相同的原则:
alert(map[0][0]);
啊哈!这将告诉我们它是一个对象,所以我们现在可以尝试访问一些属性:
alert(map[0][0].color);
提供所有的所有,并且您将掌握一些基本技术,以便一般性地分析这类问题。
如果您发现某些东西返回"未定义"然后你可能走错了路,并且需要尝试别的东西 - 要么你误解了结构,你的一个对象属性被错误地命名,要么你已经选择了一个索引值超出范围。
解决问题的另一种方法是查看定义中的外部分隔符:
[ ... ]
方括号是一个很好的标志,内容是一个数组 - 在你的情况下,这是前两个级别。因此划定了第三级:
{ ... }
这是内容是对象的标志。
答案 2 :(得分:1)
您有一个包含对象作为元素的数组。首先遍历外部数组,然后遍历内部数组并在找到它们时替换字母。 jsfiddle here。您会注意到第一次运行会将值设置为空字符串,因此第二次运行将找不到任何字母P.
var replaced = 0;
for(var i = 0; i < map.length; i++)
{
var subMap = map[i];
for( var j = 0; j < subMap.length; j++ )
{
if(subMap[j].letter == "P")
{
subMap[j].letter = "";
console.debug('replaced P with empty string');
replaced++;
}
}
}