我有这个数组:
var hemicycle = {
Group1 : [{
GroupName : "Les bests",
Member1 : [{
Name : "Loris Plasson",
Seat : 4,
Vignette : "PhotoURL"
}],
Member2 : [{
Name : "Anne-Sophie",
Seat : 3,
Vignette : "PhotoURL"
}]
}]
我想根据Member1
值将对象Member2
或Seat
推送到另一个对象上。
要做到这一点,我认为我需要"搜索"对于带有for循环的Seat值并检索对象,但我在StackOverflow上找到的所有示例都是这样的简单数组:
var array = [
{ name:"string 1", value:"this", other: "that" },
{ name:"string 2", value:"this", other: "that" }
];
使用这些简单的数组,他们可以使用像{for循环array[i]
这样的东西。
但就我而言,我真的不知道该怎么做......
更新:我想要的内容:包含搜索到的相应Seat值的Member对象。然后我将Member对象推送到另一个对象。
感谢您的帮助。
答案 0 :(得分:1)
您使用的数据结构并不反映您要传达的内容,而且还可以听到遍历的数据结构。
我建议创建一个组数组。每个组都是一个对象,它具有members属性,它是一个成员对象数组:
[{
"GroupName": "Les bests",
"members": [{
"Name": "Loris Plasson",
"Seat": 4,
"Vignette": "PhotoURL"
},
{
"Name": "Anne-Sophie",
"Seat": 3,
"Vignette": "PhotoURL"
}
]
}]
使用此结构,您可以找到一个使用2 for循环的成员 - 一个用于迭代组,另一个用于迭代每个组的成员。找到成员后,该函数立即返回成员的对象。如果没有返回undefined
:
var groups = [{"GroupName":"Les bests","members":[{"Name":"Loris Plasson","Seat":4,"Vignette":"PhotoURL"},{"Name":"Anne-Sophie","Seat":3,"Vignette":"PhotoURL"}]}];
var seatNum = 4;
function findMember(seatNum) {
var members;
for(var i = 0; i < groups.length; i++) {
members = groups[i].members;
for(var j = 0; j < members.length; j++) {
if(members[j].Seat = seatNum) {
return members[j];
}
}
}
}
var member = findMember(seatNum);
console.log(member);