将对象分配给javascript多维数组中的数组

assign object to array in javascript multidimensional array

本文关键字:数组 javascript 对象 分配      更新时间:2023-09-26

下面我给出了我的代码,这是一个javascript函数,它调用php文件并获取json数据。。。。所有的东西都是完美的,但当我想将数据添加到多维数组时,我遇到了问题。。很抱歉这个问题。。我不知道它能不能完成。

我想做什么

  1. 我想在ajax调用中检索数据,并将这些数据保存到数组中
  2. 所以如果我再次需要数据,我就不需要再打电话了
  3. 所以我想将数据存储在多维数组中,该数组将有两个键
  4. 第一个关键字将是iof数组的长度
  5. 第二个是我的数据的dataType,可以是"name"、"id"、"description"
  6. 这样做对吗
  7. 如果不是,我该怎么办。。。?帮帮我
  8. 或者,我可以将ajax调用成功获得的完整jsondata对象数据分配给数组吗

我的问题新增要求它的关联数组类似于我的php数据数组,类似于

$data[0]["id"] = 1;
$data[0]["name"] = "spomething";
$data[0]["descriptoon"] = "spomething";
$data[0]["image"] = "spomething";
//for second item
$data[1]["id"] = 1;
$data[1]["name"] = "spomething";
$data[1]["descriptoon"] = "spomething";
$data[1]["image"] = "spomething";

所以我想为javascript创建相同的数组。。。我拿的每一件东西。。。来自ajax../并包含到javascript数组中。。。

    $('.searchButton').bind("mouseover", function() {
        var data = $(this).parents('.item').attr('id');   
        var type = $(this).parents('.tab-pane').attr('id'); 
        // dataArray will be global javascript variable because of its needdss... it will be outside the function
        var dataArray = new Array();
        $.ajax({
            type: 'GET',
            url: '<?php echo $this->createUrl("dining/AjaxItemDetailsCall") ?>/data/'+data,
            dataType: 'json',
            async: false,
            success: function(data){  
                var dataArrayLength = dataArray.length;

             dataArray.push({dataArrayLength:data});
         console.log(dataArray[0]);                                              
            }
        });       
    });

现在我根据你的建议修改了我的代码,我可以通过推送fn推送数组中的数据对象。。。现在我该如何从该对象调用内部数据。。。。!

Object {dataArrayLength: Object}
dataArrayLength: Object
description: "World famous roasted Chicken, avacado, fresh mushrooms, red onions.       Mozzarella cheese and our secret sauce."
id: "11"
images: "/htdocs/kiosk/images/dining/items/pizzas/11.jpg"
name: "Bella Notte Signature Pizza"
price: "4.50"
raters: "10"
ratings: "1"
__proto__: Object
__proto__: Object

这是console.log(dataArray[0])的输出…所以现在我想从中获取"id"、"name"、"description",我该怎么做…??/

我的问题解决方案

 success:function(data){    
var dataArrayLength = dataArray.length;
dataArray.push(data);
dataArray.forEach(function(object,index){
console.log(object.id);
console.log(object.name);
console.log(object.description);
console.log(object.image);
console.log(object.ratings);
});

这就是我想做的。。。

试试这个:

$.ajax({
type:'GET',
url:'<?php echo $this->createUrl("dining/AjaxItemDetailsCall") ?>/data/'+data,
dataType: 'json',
async: false,
success:function(data){
  dataArray = []; // empty it before pushing data into it...
  dataArray.push(data);
}
});       

我相信您可以直接将数据对象推送到dataArray中。当你访问这个简单的访问时,它就像dataArray[i].id、dataArray[i].name等等,用于所有的数据键。

我不太确定我能理解,但你不能简单地做到:

$.ajax({
    type:'GET',
    url:'<?php echo $this->createUrl("dining/AjaxItemDetailsCall") ?>/data/'+data,
    dataType: 'json',
    async: false,
    success:function(data){ 
        var dataArrayLength = dataArray.length;
        dataArray.push({'id':data.id,'name':data.name,'image':data.image,'description':data.description});
    }
       });            
 });

甚至:

dataArray.push(data);

我还没有测试过这个,所以把它看作伪代码,但我相信推送方法就是你想要的吗?