访问数组中属性值的属性值
Access property values of properties values in arrays
这就是我的数据的样子。。。
var data = [
{
name: 'Bart',
grade: 4,
teacher: 'Krabappel',
record: ['Set fire to skinner','Threw poop at Milhouse'],
friends: [
{
name: 'Milhouse',
grade: 4,
teacher: 'Krabappel',
record: ['Sang songs', 'Reads loudly'],
friends:
{
name: 'Martin',
grade: 4,
teacher: 'Krabappel',
record: 'NONE',
friends: 'NONE'
}
},
{
name: 'Nelson',
grade: 4,
teacher: 'Krabappel',
record: ['Burnt classroom','Stole skinners car','Beat up Milhouse'],
friends: 'NONE'
}
]
}
//{name: 'Lisa'},
//{name: 'Maggie'}
];
我正在尝试抓取所有朋友的实例并将其记录下来。
function getFriends(data) {
data.map(function (n) {
var frands = n.friends; // works!
var fof = frands.friends; // does not work
console.log(frands);
console.log(fof);
});
}
getFriends(data);
我该如何获取朋友的所有实例,包括朋友的朋友?
这是因为上面有更多的数组,所以使用for循环就可以了
function getFriends(data) {
data.map(function (n) {
var frands = n.friends; // works!
for(var i =0;i <frands.length;i++){
var fof = frands[i].friends;
console.log(fof);
}
console.log(frands);
});
}
这需要一些递归。
var allFriends = []; //global to store unique friend objects
for(var i = 0; i < data.length; i++){
if(data[i].friends != null){
getAll(data[i].friends);
}
}
function found(friend){
for(var i = 0; i < allFriends.length; i++){
if(allFriends[i].name == friend.name){
return true;
}
}
return false;
}
function getAll(friends){
if(friends != null){
for(var i = 0; i < friends.length; i++){
if(!found(friends[i])){
var friendcopy = friends[i];
if(friendcopy.friends != null){
delete friendcopy.friends;
getAll(friends[i].friends);
}
allFriends.push(friendcopy);
}
}
}
}
这将存储在数据数组中找到的所有唯一好友。第一个函数检查友元是否已经在全局变量allFriends
内,如果不是,则递归函数将无限期地继续扫描,直到耗尽所有数据元素。当递归完成时,allFriends应该包含所有的Friends对象。
尽管如果data
中有大量项目,这种类型的函数可能会出现问题
相关文章:
- 如何在不链接/jquery的情况下使用方法应用css属性数组
- 如何使用lodash返回与模式匹配的属性数组
- 从嵌套属性数组中获取对象嵌套值
- 如何使用 javascript 返回数据属性数组
- JQuery 获取返回的属性数组
- 对公共属性数组进行排序
- Angularjs-ng repeat不反映属性数组中的更改
- JADE&NodeJS访问JSON对象属性数组
- Lodash 按数组的属性数组过滤
- 将对象数组转换为属性数组
- 如何从一个共享属性的jQuery集合中获取一个属性数组
- 骨干移除和新视图不会重置其属性数组内容
- 使用JSON从对象数组创建属性数组
- 将数据属性数组转换为对象
- 从属性数组和匹配属性值数组创建JavaScript对象的有效方法
- 访问json中的属性数组
- jquery.获得没有重复的自定义属性数组
- 如何更新对象属性数组值
- 多属性数组语法
- jQuery:生成"name”;动态属性数组