大家好,我第一个关于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;