【问题标题】:assign object to array in javascript multidimensional array将对象分配给javascript多维数组中的数组
【发布时间】:2013-12-31 00:08:43
【问题描述】:

下面我给出了我的代码,它是一个调用 php 文件并获取 json 数据的 javascript 函数....一切都还算完美,但是当我想将数据添加到多维数组时出现问题..抱歉对于这个菜鸟问题..我不知道它是否可以完成。

我想做什么

  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]);                                              

            }
        });       
    });

现在我根据你的建议更改我的代码我可以通过 push 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);
});

这就是我想做的……

【问题讨论】:

    标签: javascript arrays object multidimensional-array associative-array


    【解决方案1】:

    试试这个:

    $.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 调用之前检查 dataArray 如果数据存在它不会调用如果不是该项目,它将调用 ajax ...我的观点是 json 数据将仅用于一个项目..但是当我再次 cvall 时,它将被递增...
    • 您的意思是,如果您的 dataArray 中已经有数据,那么您不想进行 AJAX 调用,我是不是在骗您?
    • 是的,但是..谢谢..我想通了......一段时间后看看问题我会写我的解决方案....感谢好友的帮助....
    【解决方案2】:

    我不太确定我明白,但你不能简单地这样做:

    $.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);
    

    我还没有测试过,所以认为它是伪代码,但我相信 push 方法是你要找的?

    【讨论】:

    • 是的 .. 但我想存储多个项目的数据......它就像人名的 facebook 弹出窗口......当您将鼠标悬停在名称上时,您将获得人名图像名称的数据等等。 ...当您将鼠标悬停在另一个名称上时,他们将这些数据保存到某个东西上,您也获得了该人的数据...该数据也已保存...所以我想为用户鼠标悬停的所有项目保存数据。 .. 所以当用户将鼠标悬停在现有数据上时......它不会调用 ajax 函数..
    • Array.push 只是将对象添加为数组中的下一个元素,因此您可以添加任意数量的对象(JS 的限制不受限制)。
    • Andy itrs 非常有帮助,但我想创建其他内容。再次查看我的问题,我已对其进行了编辑...并添加了一些我想做的适当的事情...
    猜你喜欢
    • 2011-12-24
    • 2015-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-09
    相关资源
    最近更新 更多