我需要找到一个key
,其中包含一个对象a
。它不应该返回包含数组或字符串的键。例如,在a
它应该返回我d
但不b
或c
如何获取密钥包含下划线中的对象?
a = {"b" : "hi","c":[1,2,3],"d":{"2:":3}};
这里是剪断我试过了。它返回Object的第一个实例。但我不需要数组实例只是一个字典。
var _ = require(underscore);
_.findKey(a,_.isObject);
我需要找到一个key
,其中包含一个对象a
。它不应该返回包含数组或字符串的键。例如,在a
它应该返回我d
但不b
或c
如何获取密钥包含下划线中的对象?
a = {"b" : "hi","c":[1,2,3],"d":{"2:":3}};
这里是剪断我试过了。它返回Object的第一个实例。但我不需要数组实例只是一个字典。
var _ = require(underscore);
_.findKey(a,_.isObject);
您可以使用普通的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"]
如果对象具有“长度”属性,该怎么办?也许最好使用'!Array.isArray(a [k])'... –
@RobM。 - 好点,编辑 - 绝对没有想到这一点。 – tymeJV
任何方式在一行,,,多数民众赞成我的兴趣!!!!!这就是在下划线中尝试它的原因 –
我很干净的方法是使用pick
从underscore
var a = {"b" : "hi","c":[1,2,3],"d":{"2:":3}};
var aFiltered = _.pick(a, function() {
return _.isObject(value);
});
它甚至选择一个数组类型...我只需要字典。在return语句中,我们需要否定数组类型。 –
'_ .isObject'将不起作用,因为数组是对象。 – Barmar