Javascript 获取值为null的键的名称
我正在数组中运行一个循环,检查Javascript 获取值为null的键的名称,javascript,jquery,arrays,key,Javascript,Jquery,Arrays,Key,我正在数组中运行一个循环,检查calendar和tpoint是否有值。在我的if语句的else语句中,我试图用var notSelected=(obj.prop.subop).val()获取键的名称 我知道我已经放弃了我的方法。。我只是不知道如何获得密钥名 因此,在我的示例中,由于tpoint中的值为空,我希望var notSelected等于tpoint 有人知道我怎么做吗 var packageContents = { 'packages': [ {
calendar
和tpoint
是否有值。在我的if语句的else
语句中,我试图用var notSelected=(obj.prop.subop).val()获取键的名称代码>
我知道我已经放弃了我的方法。。我只是不知道如何获得密钥名
因此,在我的示例中,由于tpoint
中的值为空,我希望var notSelected
等于tpoint
有人知道我怎么做吗
var packageContents = {
'packages': [
{
'price': '23',
'name': 'Bronze Bundle Package',
'calendar': {
'type': '2year',
'color': 'Brushed Nickel',
},
'tpoint': {
'type': '',
'touches': '',
'years': '',
}
}
]
};
var bundleSet = null;
var bundleSet = null;
packageContents.packages.forEach(function (obj) {
for (var prop in obj) {
if (prop === 'calendar' || prop === 'tpoint') {
for (var subProp in obj[prop]) {
if (obj[prop][subProp] !== '') {
bundleSet = true;
} else {
bundleSet = false;
var notSelected = (obj.prop.subProp).val() !== '';
console.log(notSelected);
}
}
}
}
console.log(bundleSet);
});
像这样的东西怎么样:
function hasEmptyProps(prop) {
return Object.values(prop).some(x => x === '');
}
const result = packageContents.packages.map(x => {
if (hasEmptyProps(x.calendar)) {
return 'calendar';
} else if (hasEmptyProps(x.tpoint)) {
return 'tpoint'
} else {
return '';
}
})
console.log(result)
将返回[“tpoint”]
(或“calendar”、“”或“tpoint”数组)引用对象属性subop的行是错误的;它应该是obj[prop][subop]
,如if
语句所示。调用.val()
也没有意义;您所需要的就是obj[prop][subop]
,它将解析为“tpoint”对象的“type”、“touch”或“years”属性的值。@Pointy我尝试过做一些类似的事情<代码>变量notSelected=(对象[prop][subop]).val()!=''
您应该看到关于.val()
引用的错误。@Pointy Right,我得到.val
不是函数。我只是不确定如何构造它。只要去掉.val()
,因为它没有任何意义obj[prop][subop]
是解析为子属性值的表达式。你的代码已经在使用它了!不管怎样,在确定子属性值为''
之后,确实不清楚为什么还要费心再次检查它。