2016-09-16 78 views
1

我需要找到一个key,其中包含一个对象a。它不应该返回包含数组或字符串的键。例如,在a它应该返回我d但不bc如何获取密钥包含下划线中的对象?

a = {"b" : "hi","c":[1,2,3],"d":{"2:":3}}; 

这里是剪断我试过了。它返回Object的第一个实例。但我不需要数组实例只是一个字典。

var _ = require(underscore);  
_.findKey(a,_.isObject); 
+1

'_ .isObject'将不起作用,因为数组是对象。 – Barmar

回答

2

您可以使用普通的JS这个:

var keysThatContainObjects = Object.keys(a).filter(function(k) { 
    return typeof a[k] === "object" && !Array.isArray(a[k]); 
}); //["d"] 

1线

var keysThatContainObjects = Object.keys(a).filter(function(k) { return typeof a[k] === "object" && !Array.isArray(a[k]); }); //["d"] 
+1

如果对象具有“长度”属性,该怎么办?也许最好使用'!Array.isArray(a [k])'... –

+0

@RobM。 - 好点,编辑 - 绝对没有想到这一点。 – tymeJV

+0

任何方式在一行,,,多数民众赞成我的兴趣!!!!!这就是在下划线中尝试它的原因 –

0

我很干净的方法是使用pickunderscore

var a = {"b" : "hi","c":[1,2,3],"d":{"2:":3}}; 
var aFiltered = _.pick(a, function() { 
    return _.isObject(value); 
}); 
+0

它甚至选择一个数组类型...我只需要字典。在return语句中,我们需要否定数组类型。 –

相关问题