我的数据看起来像这样
var obj = { QuestionId: 97,
SortOrder: { '9': '1' },
directive: { '1': false, '2': false, '9': true },
data: { '1': '', '2': '', '9': 'adfaf' }
}
在循环中,我想检查指令键是否具有值
预期打印
directive key 9 : true
SortOrder key 9 " 1
data key 9 = 'adfaf'
请注意9
是我唯一关心的。
我意识到SortOrder
只有1个键/值对 - 我不知道为什么会这样,但这将是我正在处理的常见问题。
我正在尝试单循环,但接着是这样的嵌套循环,但它不正确
for (var d in obj) {
if (d === "directive") {
for (var prop in obj[d]) {
if (obj[d][prop] == true) {
}
}
}
}
答案 0 :(得分:1)
你可以迭代obj.directive
的键,如果值是真的,那么打印其他属性的值。
var obj = { QuestionId: 97, SortOrder: { 9: '1' }, directive: { 1: false, 2: false, 9: true }, data: { 1: '', 2: '', 9: 'adfaf' } };
Object.keys(obj.directive).forEach(function (k) {
if (obj.directive[k]) {
['directive', 'SortOrder', 'data'].forEach(function (kk) {
console.log(kk + ' key ' + k + ': ' + obj[kk][k]);
});
}
});
答案 1 :(得分:1)
var obj = { QuestionId: 97,
SortOrder: { '9': '1' },
directive: { '1': false, '2': false, '9': true },
data: { '1': '', '2': '', '9': 'adfaf' }
};
if(obj.hasOwnProperty('directive'))
{
var sortResult = {};
var dataResult = {};
var dirResult = Object.keys(obj['directive'])[Object.values(obj['directive']).indexOf(true)];
if(dirResult){
sortResult[dirResult] = obj['SortOrder'][dirResult];
dataResult[dirResult] = obj['data'][dirResult];
console.log('directive result', dirResult);
console.log('sortOrder result', sortResult);
console.log('dara result', dataResult);
}
}
答案 2 :(得分:0)
obj.directive
。你已经有了这个
{ '1': false, '2': false, '9': true }
因此if(obj.directive['9'])
将为您提供true
如果你想进行迭代
var x =obj.directive
for (var key in x) {
if (x.hasOwnProperty(key)) {
if(x[key])
{
//do anything
}
}
}
答案 3 :(得分:0)
试试这个
var obj = { QuestionId: 97,
SortOrder: { '9': '1' },
directive: { '1': false, '2': false, '9': true },
data: { '1': '', '2': '', '9': 'adfaf' }
}
if (obj && obj.directive) {
for(x in obj.directive) {
if (obj.directive[x] === true) {
console.log('result:', x);
break;
}
}
}