每个人都有开始的地方:)
我不知道如果我完全理解你以后在做什么,但在这里不用...
首先,它看起来像你的对象上的符号是巧妙地关闭列出你的钥匙时。例如,在Mike和Penny之间,你应该用逗号分隔较大雇主对象中的每个键。
喜欢的东西:
employers: {
Mike: {
...
}, //need a comma here
Penny: {
...
}
}
而且,在每个那些雇主,应该有剪切和hair_straightening按键之间的逗号。
services: {
cut: {
value: 10
}, //need a comma here
hair_straightening: {
value: 20
}
}
现在你的实际问题... 要获得每个服务的钥匙,你可以使用Object.keys()。这个功能可以让你获得给定雇主的钥匙。然后你也可以从同一个函数中获取值。 (注意:这是只有一个雇主,你只是想遍历并都使用相同的功能上的每个)
function getServices(employer) {
var services = employer.services;
var servicesKeys = Object.keys(services);
var serviceValueMatrix = [];
servicesKeys.forEach(function(service) {
serviceValueMatrix.push([service, employer.services[service].value])
})
return serviceValueMatrix;
}
// assuming you had var yourJSON = { employers: {...} }
// getServices(yourJSON.employers.Mike);
// returns [["cut",10], ["hair_straightening",20]]
此外,考虑到您的JSON对象是已经在关键:值的格式,你可以可能跳过最后一组对象中的值的格式为:10,值:20等,而不是只让你的对象有点像最后一层:
services:{
cut: 10,
hair_straightening: 20
}
然后,你可以随便抓services.cut服务.hair_straightening。下面
的完整代码为清楚:你为什么不使用数组
const yourJSON = {
employers: {
Mike: {
old: 20,
services: {
cut: {
value: 10
},
hair_straightening: {
value: 20
}
}
},
Penny: {
old: 20,
services: {
cut: {
value: 10
},
hair_straightening: {
value: 20
}
}
}
}
}
function getServices(employer) {
var services = employer.services;
var servicesKeys = Object.keys(services);
var serviceValueMatrix = [];
servicesKeys.forEach(function(service) {
serviceValueMatrix.push([service, employer.services[service].value])
})
return serviceValueMatrix;
}
console.log(getServices(yourJSON.employers.Mike));
// returns [["cut",10], ["hair_straightening",20]]
存储'employes'及其'services'?循环访问数据将变得更加容易! –
那么,对于初学者来说,这不是JSON,这就是亲切地称为POJO(Plain Old Javascript Object)的东西。要获取对象的键列表,您可以调用Object.keys(myObj);并访问属性值,可以通过点('.')语法或括号('[]')静态地访问它们。语法 – mhodges
@mhodges我认为'POJO'应该是一个标准。我已经看到很多人称POJO,JSON。 –