我对以下问题有疑问:
我为一个由棋子制作的游戏制作了一块棋盘。每一件都有自己的x和y坐标,但也有一个布尔值,它是一条道路与否,而且它是否有一个炮塔。
所以这就是数组:
var Array = [""];
Array.push({
x: i,
y: j,
road: false,
tower: null,
id: "gamezone"+j+i
});
现在,Array.push位于一个循环中,它提供了以下信息:该部分有效。现在提出问题:
如何编辑阵列中每个对象的某些信息? 例如,某些部分确实有道路,所以我所做的是:
Array.push({road: true});
但是没有这样做。 我该怎么做?
第二个问题:
如果我想使用数组对象的一些信息,例如我必须使用if (Array(road = true)) then ...
创建一个if-else
我不认为这是从数组中获取信息的正确方法,所以请在那里帮助我。
如果您有任何关于此操作的文档,请注意提供链接吗?
非常感谢!
答案 0 :(得分:1)
使用map函数更改可以创建新数组的值:
var arr = []
arr.push(someObj)
arr = arr.map(function(x, i){
if(someCondition) {
x.road = true
}
return x
})
获取值使用过滤器函数:
var arr = []
arr.push(someObj)
var sel = arr.filter(function(x, i){
return someCondition
})
答案 1 :(得分:1)
首先更改变量的名称。而且,按照惯例,以大写字母开头的变量也用于构造函数。
push()
在数组末尾添加一个新元素。当您尝试更改某个数组元素的某个属性时,您不应该使用push。如果要更改阵列中的一个对象元素,首先必须找到它。然后改变其财产。
aray[indexOfObject]
会找到该对象。您必须知道对象所在的数字索引。如果要使用命名键(而不是数字键)引用对象,则应使用一个对象来保存所有其他对象。但是如果你知道索引,那就是你如何继续:
aray[indexOfObject].road = true;
答案 2 :(得分:1)
您尝试将对象推入对象数组,因此每当您尝试访问或更新这些数组的任何数组元素时,您需要通过数组索引获取它 - 如< - p>
Array[0]
它为数组0
中的Array
索引提供了对象
无论何时你想要更新某个数组项,你首先需要找到它的索引,然后更新该数组项,
所以要查找索引对应的搜索项,需要自定义查找功能。它也可以使用indexOf()
数组对象。
喜欢-
的 Array.indexOf(ArrayItem); 强>
并更新数组项,如下所示 -
Array[0]={
x: i,
y: j,
road: false,
tower: null,
id: "gamezone"+j+i
};
首先尝试找到要更新的数组元素的索引,然后更新该数组项。
答案 3 :(得分:0)
根据此Loop through an array in JavaScript
您可以迭代数组并检查/修改属性
for (var i = 0; i < yourArray.length; i++) {
if (yourArray[i].x == 1 && yourArray[i].y == 2)
{
// Do something
}
}