Javascript: 将某些信息推送到数组并从数组中获取信息
Javascript: pushing certain info to Array and getting info out of array
我对以下问题有疑问:
我为一个由棋子组成的游戏制作了棋盘。每块都有自己的 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
我不认为这是从数组中获取信息的正确方法,所以请帮助我。
如果您有任何关于这样做的文档,介意也给一个 link 吗?
非常感谢!
据此Loop through an array in JavaScript
您可以迭代数组和 check/modify 属性
for (var i = 0; i < yourArray.length; i++) {
if (yourArray[i].x == 1 && yourArray[i].y == 2)
{
// Do something
}
}
要更改值,您可以使用映射函数创建一个新数组:
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
})
首先更改变量的名称。而且,按照惯例,以大写字母开头的变量用于构造函数。
push()
向数组末尾添加一个新元素。当您尝试更改数组元素之一的 属性 时,您不应该使用推送。如果你想改变数组中的一个对象元素,你首先必须找到它。然后改变它的属性.
aray[indexOfObject]
会找到对象。您必须知道对象所在的数字索引。如果您想使用命名键(而不是数字键)引用对象,您应该使用一个对象来保存所有其他对象。但是如果你知道索引,那就是你如何进行:
aray[indexOfObject].road = true;
您尝试将对象推入对象数组,因此每当您尝试访问或更新这些数组的任何数组元素时,您需要通过数组索引获取它 -
Array[0]
它在数组 Array
中的 0
索引处为您提供对象
另外,无论何时你想更新一些数组项,你都需要首先找到它的索引,然后更新该数组项,
所以要找到索引对应的搜索项,你需要自定义查找功能。也可以使用数组对象的 indexOf()
。
像-
Array.indexOf(ArrayItem);
并像下面这样更新数组项-
Array[0]={
x: i,
y: j,
road: false,
tower: null,
id: "gamezone"+j+i
};
因此请先尝试找到要更新的数组元素的索引,然后再更新该数组项。
我对以下问题有疑问:
我为一个由棋子组成的游戏制作了棋盘。每块都有自己的 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
我不认为这是从数组中获取信息的正确方法,所以请帮助我。
如果您有任何关于这样做的文档,介意也给一个 link 吗?
非常感谢!
据此Loop through an array in JavaScript
您可以迭代数组和 check/modify 属性
for (var i = 0; i < yourArray.length; i++) {
if (yourArray[i].x == 1 && yourArray[i].y == 2)
{
// Do something
}
}
要更改值,您可以使用映射函数创建一个新数组:
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
})
首先更改变量的名称。而且,按照惯例,以大写字母开头的变量用于构造函数。
push()
向数组末尾添加一个新元素。当您尝试更改数组元素之一的 属性 时,您不应该使用推送。如果你想改变数组中的一个对象元素,你首先必须找到它。然后改变它的属性.
aray[indexOfObject]
会找到对象。您必须知道对象所在的数字索引。如果您想使用命名键(而不是数字键)引用对象,您应该使用一个对象来保存所有其他对象。但是如果你知道索引,那就是你如何进行:
aray[indexOfObject].road = true;
您尝试将对象推入对象数组,因此每当您尝试访问或更新这些数组的任何数组元素时,您需要通过数组索引获取它 -
Array[0]
它在数组 Array
中的 0
索引处为您提供对象
另外,无论何时你想更新一些数组项,你都需要首先找到它的索引,然后更新该数组项,
所以要找到索引对应的搜索项,你需要自定义查找功能。也可以使用数组对象的 indexOf()
。
像-
Array.indexOf(ArrayItem);
并像下面这样更新数组项-
Array[0]={
x: i,
y: j,
road: false,
tower: null,
id: "gamezone"+j+i
};
因此请先尝试找到要更新的数组元素的索引,然后再更新该数组项。