有没有一种方法可以动态地将名称放入数组或位置?

时间:2020-03-10 18:23:11

标签: javascript

我所拥有的:

3个有很多动物的数据库,表之间有很多相似之处,所以只有一个查询,因此根据 '名称,注册或编码',并返回PHP中的对象数组,并将其传递给Javascript对象,并构成这些js对象的数组。 由于数据库非常庞大,因此我限制了查询只能从每个数据库中带入60只动物

现在,我将它们打印在一张桌子上,并在用户点击打开该功能时,使用功能onClick 在该模式上调用一个调用模式的功能(模态),我在参数中的JS 对象数组上传递位置,然后它将以该模态在对象内部打印信息。

问题:

我正在使用“静态” 的方式来执行此操作,其中我只打印0到60 ,然后我检查数据库是否为,如果不是第一个$ i = 60;所以它又开始从60到120计数,我又打印了一个ID说是120到180。

listAnimals(animal[id]);

其中id是我以静态方式打印的数字,因此,当我没有携带180种动物的完整列表时,这意味着用户搜索了某个“名称,代码或寄存器”,因为它是静态的,所以它总是会打印出错误的数字,因为它在我的模式中将显示错误的信息,或者将不显示任何信息,因为animal['id']上的位置不存在。

示例:假设我在搜索引擎上搜索了“ 123456”代码,它将从3个数据库中获得3个不同的结果,第一个ID将为0,并在上显示正确的信息,但是第二个来自第二个数据库,它将带有60,但是由于JS对象数组上没有id 60,所以仅显示3个任何信息,当然这将发生在第三个信息上,因为它的ID为120。

我想做什么:

为了不使用该JS数组上的位置并开始使用键>值(我猜是哈希表?)来表示KEY将与DB表上的动物寄存器相同,例如,调用函数Animals(animal [register])会打印带有该寄存器的动物,因为它已经存在,所以我将总是通过寄存器调用它(因为它是唯一的),并且总是打印正确的动物。

我尝试做的事情:

`让动物{ id:从php接收id, 名称:从php接收名称, 注册:从php接收 } 动物[animal.register] =动物

listAnimals [animal.register]; `

示例: 我用“ 12345”注册寻找动物

PHP将在包含所有包含该寄存器的动物的对象数组返回后在数据库上寻找我。

在JS中,我将在for中定义一个对象,该对象将接收PHP数组中所有对象的数组信息。

    animals = []
    for ($i = 0; $i < count(animals); $i++) {
      let Animal = {
       id: <?php echo animal.getId(); ?>,
       name: <?php echo animal.getName(); ?>,
       register: <?php echo animal.getregister(); ?>
     }
    animals[Animal.register] = Animal
    }

    function listAnimals(animals) {
       return to the modal the animal equivalent of that register
    }

我现在正在尝试使用Maps

1 个答案:

答案 0 :(得分:0)

最后,我解决了问题,问题是JavaScript需要一个字符串作为键,所以我做了什么?我将来自数据库的ID与他们的名字首字母一起加入,所以最终它将以这样的方式结束

foo123456

然后,我可以轻松地使用Key> Value数组,其中Key是一个字符串,代表单个对象(值)。对于我的情况,这也很好,因为我需要从数据库中获得的ID之间有一些区别。我也尝试过用PHP做到这一点,这要容易得多,以后我将尝试实现JSON。