按索引字符串值在Javascript对象中搜索
我试图迭代一个多维对象。我有一个字符串,我必须在对象索引中匹配该字符串并获得该值。 例如:按索引字符串值在Javascript对象中搜索,javascript,object,Javascript,Object,我试图迭代一个多维对象。我有一个字符串,我必须在对象索引中匹配该字符串并获得该值。 例如: 在这种情况下,我只有字符串“usa”,在对象中,索引是“usa:::west”。如何搜索它?一种方法是迭代数据集的键并尝试匹配键的开头: var search = 'usa'; var keys = Object.keys(datasets); for (var key in keys) { if (key.indexOf(search) === 0) { var values =
在这种情况下,我只有字符串“usa”,在对象中,索引是“usa:::west”。如何搜索它?一种方法是迭代数据集的键并尝试匹配键的开头:
var search = 'usa';
var keys = Object.keys(datasets);
for (var key in keys) {
if (key.indexOf(search) === 0) {
var values = datasets[key];
// from here on you have access to label, data, etc
}
}
正如我正确理解的那样,这可能是您追求的目标:
var getKeys = function(query) {
var keys = Object.keys(datasets).filter(function(key) {
return !!~key.indexOf(query);
});
return keys;
};
其中
getkey('usa')
返回一个数组['usa:::west']
。例如getKeys(':')
将返回['usa:::west','russia:::north']
不确定您要找的是什么。如果你想搜索数据集中的键,看看如果你想更深入地搜索,你也必须搜索每个键的内部。是的,这很有效。谢谢你,罗宾。是的,这对我也有用。谢谢你的回答@请注意:在较旧的客户端环境中,Object.key
和Array.filter
不可用(用于细分和筛选)<代码>for/for...in
可以改用。对象。键
返回一个数组,它被认为是错误的样式,在某些浏览器中使用for。。。在阵列上的
中。在最近的浏览器中,使用Object.keys(obj).filter(…)
或包括较旧的浏览器通过索引访问数组。vanhelgen是正确的,我的坏是因为这个坏的快捷方式。对于(var i=0;ivar getKeys = function(query) {
var keys = Object.keys(datasets).filter(function(key) {
return !!~key.indexOf(query);
});
return keys;
};