2015-04-30 123 views
0

对象可以具有属性a,b,c或d。属性列表中,检查对象具有哪个属性?对象只能有其中一个属性

找出它有哪一个最好的方法是什么?

var input = { 
    name: 'Bob', 
    a: 1 
} 

预期输出:

a 

我以前使用的:

_.keys(_.pick(input, 'a', 'b', 'c', 'd'))[0] 

,但不知道是否有更好的方法来做到这一点?

+0

'如果( “A” 输入)'想到什么? – adeneo

+0

或者如果你想返回属性,Object.keys' – adeneo

+1

你可以使用'_.intersection()'得到键列表和只能出现一次的键列表的交集。如果十字路口只包含一个键,那就是答案;如果不止一个,则该对象违反规则。 – Pointy

回答

0

不知道这是更好,但一个smidgeon更具表现或许:

var result = _.find('abcd', function(key){ 
     return _.has(input,key); 
    }) 
+0

或'some()'而不是'find()' - 如果你想要一个布尔结果,而不是找到的字符串。 –

0

这应该这样做。不知道它是否“更好”,但它会让你无需使用另一个库,再加上应该更轻一点。

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));

相关问题