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
        };

因此请先尝试找到要更新的数组元素的索引,然后再更新该数组项。