如何使用多维数组中的数据值



大家好,我第一个关于stackoverflow的问题。我是jquery和js的新手。我尽量说得具体些。

我在另一个对象中创建了一个对象。我试着列一个人(对象)的清单,他们拥有不同的鱼(对象)。人的目标进行得很顺利,但目标鱼没有成功。现在在数据源文件中,我已经制作了2个数组。一个给人一个给鱼。

之后:

var data = 
[
    {
        "id": 1,
        "guid": "14f09c11-d343-44a6-a8b5-ddfc9196636f",
        "isActive": true,
        "age": 27,
        "name": "Abe",
        "fishes" : 0
    },
    {
        "id": 2,
        "guid": "3129a7d7-c956-4201-bda4-338d27e15fdf",
        "isActive": true,
        "age": 39,
        "name": "Rachel",
        "fishes":1
    },
    {
        "id": 3,
        "guid": "c4dea911-9523-4fdc-b129-f2ba10b40a8d",
        "isActive": true,
        "age": 20,
        "name": "harrison",
         "fishes":2

    }
]
var datafish = 
[
{
    "id":1,
    "name": "gruber",
    "color": "red",
    "edible": true,
    "picture":"fish1.jpg"
},
{
    "id":2,
    "name": "dorade",
    "color": "green",
    "edible": true,
    "picture":"fish2.jpg"
},
{
    "id":3,
    "name": "puff-fish",
    "color": "random",
    "edible": false,
    "picture":"fish3.jpeg"
}
]

如你所见,每个人都有一条鱼(under fishes)。现在我想在jquery或js中只显示他们在个人资料中拥有的鱼。我只是不知道如何引用var数据中的鱼的值。这正是我所需要的……

我已经在我的js文件中尝试过了:

 var i = data[fishes.value];

:

 var i = data.fishes.value;

我希望你们能理解我的问题,如果不能的话,我很乐意提供更多的信息。

谢谢!

编辑:

将添加我的函数:

function create(persona)
{
var body = $('body');
var person = $('<div></div>').addClass('person').appendTo(body);
var name = $('<div></div>').addClass('name').appendTo(person);
var img = $('<img/>').appendTo(person);
var age = $('<div></div>').addClass('age').appendTo(person);
name.text(persona.name);
age.text(persona.age);
img.attr('src', 'graphics/' + persona.picture);
fish();

}   
function fish()
{
var body = $('body');
    var person = $('<div></div>').addClass('person').appendTo(body);
    var fishbar = $('<div></div>').addClass('fishbar').appendTo(person);
 var i = data[fishes.value]
    var fishmenu = $('<div></div>').addClass('fishmenu').appendTo(fishbar);
    var fishimg = $('<img/>').addClass('fishpicture').appendTo(fishmenu);
    var fishcolor = $('<div></div>').addClass('fishcolor').appendTo(fishmenu);
    var fishedible = $('<div></div>').addClass('fishedible').appendTo(fishmenu);
    var fishname = $('<div></div>').addClass('fishname').appendTo(fishmenu);
    fishimg.attr('src', 'graphics/' + datafish[i].picture);
    fishname.text(datafish[i].name);
    fishcolor.text(datafish[i].color);
    fishedible.text(datafish[i].edible);
    fishmenu.attr('datafish-id', i);
}

我给你写了一个函数,用它你可以得到一个人的鱼:

function getFish(datafish, person) {
    var fish;
    for(var i = 0; i < datafish.length; i++) {
        if(datafish[i].id == person.fishes) {
            fish = datafish[i];
            break;
        }
    }
    return fish;
}

只是延续"Think Different"的评论,你有一个Person对象数组,数组(即[1,2,3])的索引从0开始到no_of_elements-1。对象的属性是用点表示法访问的,所以你需要在person数组中选择一个需要索引的person

例如你需要第一人称的鱼,第一人称将被选中第一个人位于数据数组的第0个索引处所以使用

data[0]

现在需要第一个人的fish所以使用点符号来获取fish属性

data[0].fishes

这将给你第一个人拥有的鱼如果您需要具有特定名字的人的鱼,请执行以下操作

var name="Abe"
var fishid
for(var i=0;i<data.length;i++)
if(data[i].name==name)
{
 fishid=data[i].fishes;
 break;
}

现在你有了名为"Abe"的人的fish id;

相关内容

  • 没有找到相关文章

最新更新