我有一个包含多个对象的对象,需要为每个对象中的每个键创建一个循环。
我需要控制台记录这样的内容。
Iron
TIBC
carbon dioxide
Sodium
etc...
这是我到目前为止所尝试的
(function() {
var blood = {
"blood": {
"one": {
"iron": "Iron",
"tibc": "TIBC",
},
"two": {
"cd": "Carbon Dioxide",
"sodium": "Sodium",
"potassium": "Potassium",
"chloride": "Chloride",
},
"three": {
"cholesterol": "Cholesterol",
"dhdl": "Direct HDL",
},
"four": {
"rigg": "Rubella IgG",
"hbsag": "HBsAg",
"ahiv": "Anti-HIV 1+2",
"estrdiol": "Estradiol",
"fsh": "FSH",
}
}
}
for (var key in blood) {
if (blood.hasOwnProperty(key)) {
var newKey = blood[key]
for (var key in newKey) {
if (newKey.hasOwnProperty(key)) {
//do stuff
console.log(newKey[key])
}
}
}
}
})
答案 0 :(得分:1)
这就是Object.values的用途:
const result = Object.values( blood.blood ).map(
obj => Object.values(obj).join("\n")
).join("\n");
console.log( result );
答案 1 :(得分:0)
喜欢这个吗?
您正在使用for循环遍历键,因此通过递归调用相同的for循环并仅在对象的object
为字符串时显示输出,我们可以获得所需的输出,如果它type为var blood = {
"blood": {
"one": {
"iron": "Iron",
"tibc": "TIBC",
},
"two": {
"cd": "Carbon Dioxide",
"sodium": "Sodium",
"potassium": "Potassium",
"chloride": "Chloride",
},
"three": {
"cholesterol": "Cholesterol",
"dhdl": "Direct HDL",
},
"four": {
"rigg": "Rubella IgG",
"hbsag": "HBsAg",
"ahiv": "Anti-HIV 1+2",
"estrdiol": "Estradiol",
"fsh": "FSH",
}
}
}
function keyGetter(data){
for(key in data){
if(typeof data[key] === typeof ""){
console.log(data[key]);
}else{
keyGetter(data[key]);
}
}
}
keyGetter(blood);
然后再次调用该函数。
{{1}}
答案 2 :(得分:0)
您可以使用以下内容将所有值放入数组中:
let allTypes = [];
Object.values(blood.blood).forEach(v => {
// we are iterating over "one"..."four"
allTypes.push(...Object.values(v));
});
console.log(allTypes);
将输出["Iron", "TIBC", "Carbon Dioxide", "Sodium", "Potassium", "Chloride", "Cholesterol", "Direct HDL", "Rubella IgG", "HBsAg", "Anti-HIV 1+2", "Estradiol", "FSH"]
。
https://jsbin.com/kodolok/edit?js,console
在迭代基本上是关联数组的对象时,Object.values非常有用。
答案 3 :(得分:0)
我做了一个可以帮助你的递归函数!
var blood = {
"blood": {
"one": {
"iron": "Iron",
"tibc": "TIBC",
},
"two": {
"cd": "Carbon Dioxide",
"sodium": "Sodium",
"potassium": "Potassium",
"chloride": "Chloride",
},
"three": {
"cholesterol": "Cholesterol",
"dhdl": "Direct HDL",
},
"four": {
"rigg": "Rubella IgG",
"hbsag": "HBsAg",
"ahiv": "Anti-HIV 1+2",
"estrdiol": "Estradiol",
"fsh": "FSH",
}
}
}
loopThrough(blood)
function loopThrough(obj){
if(typeof obj == "object"){
for(var i in obj){
loopThrough(obj[i]);
}
}else{
console.log(obj)
}
}