对象可以具有属性a,b,c或d。属性列表中,检查对象具有哪个属性?对象只能有其中一个属性
找出它有哪一个最好的方法是什么?
var input = {
name: 'Bob',
a: 1
}
预期输出:
a
我以前使用的:
_.keys(_.pick(input, 'a', 'b', 'c', 'd'))[0]
,但不知道是否有更好的方法来做到这一点?
对象可以具有属性a,b,c或d。属性列表中,检查对象具有哪个属性?对象只能有其中一个属性
找出它有哪一个最好的方法是什么?
var input = {
name: 'Bob',
a: 1
}
预期输出:
a
我以前使用的:
_.keys(_.pick(input, 'a', 'b', 'c', 'd'))[0]
,但不知道是否有更好的方法来做到这一点?
不知道这是更好,但一个smidgeon更具表现或许:
var result = _.find('abcd', function(key){
return _.has(input,key);
})
或'some()'而不是'find()' - 如果你想要一个布尔结果,而不是找到的字符串。 –
这应该这样做。不知道它是否“更好”,但它会让你无需使用另一个库,再加上应该更轻一点。
var input = {
a: 1
}
function whichProperty(obj) {
var possibilities = ['a', 'b', 'c', 'd'];
return possibilities.filter(function (a) {
return obj[a];
})[0];
}
document.write(whichProperty(input));
'如果( “A” 输入)'想到什么? – adeneo
或者如果你想返回属性,Object.keys' – adeneo
你可以使用'_.intersection()'得到键列表和只能出现一次的键列表的交集。如果十字路口只包含一个键,那就是答案;如果不止一个,则该对象违反规则。 – Pointy