将数据存储到javascript变量中

时间:2015-12-19 16:50:54

标签: javascript javascript-objects

我试图将数据存储到javascript变量中。

这是我的情景: 我有一个人员列表(person_id,person_name),每个人都有成功的宠物(pet_id,pet_name)和/或玩具(toys_id)。

[Persons]
   Person_Id
   Person_Name
   [Pets]
      Pet_Id
      Pet_Name
   [Toys]
      Toy_Id

我尝试了各种各样的东西,即使有时我能把所有东西都存放起来,我也不确定我是否正确地做到了这一点。

我应该将ID存储为密钥吗?这样做是否正确? 稍后知道我将尝试知道每个人有多少宠物和玩具。此外,我的变量应该存储1个或多个人。

 var myVar = {person_id:{
                person_name:'',
                pet_id:{
                    pet_name:''
                },
                toys:{
                    toys_id:''
                }
            }};

非常感谢一些帮助。

2 个答案:

答案 0 :(得分:1)

我认为最好的方法是将人员存储在数组中



var persons = [
               {
                person_id:1,
                person_name:'per1',
                pets:[
                      {id:1,name:"petname1"},
                      {id:2,name:"petname2"}
                    ]
                ,
                toys:[{id:1,name:"toyname1"},{id:2,name:"toyname2"}]
              }
            ];
//to find person by id=1
var arr=persons.filter(function(obj){return obj.person_id=1});
alert(arr.length)
if(arr.length>0){
//to find pets length 
  alert(arr[0].pets.length)
  }




答案 1 :(得分:0)

您可以使用如下结构。当id不同时,则无需将它们包装在数组中。

另一个好的想法是将属性简单化为name而不是pet_nametoy_name

下面是一个如何迭代对象并从对象中获取所有宠物和玩具的示例。



var object = {
    p01: {
        name: 'Anakin',
        pets: {
            pet01: {
                name: 'Cat'
            }
        },
        toys: {
            R2D2: {
                name: 'Roboter 1'
            },
            C3PO: {
                name: 'Roboter 2'
            }
        }
    },
    'FN-2187': {
        name: 'Finn',
        pets: {
            pet03: {
                name: 'Sam'
            }
        },
        toys: {
            BB8: {
                name: 'Roboter 3'
            }
        }
    }
};

function getItem(type) {
    var array = [];
    Object.keys(object).forEach(function (k) {
        Object.keys(object[k][type]).forEach(function (kk) {
            array.push(object[k][type][kk].name + ' (' + kk + ') owned by ' + object[k].name  + ' (' + k + ')');
        });
    });
    return array;
}

document.write('<pre>' + JSON.stringify(getItem('pets'), 0, 4) + '</pre>');
document.write('<pre>' + JSON.stringify(getItem('toys'), 0, 4) + '</pre>');
&#13;
&#13;
&#13;