按索引字符串值在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;i
var getKeys = function(query) {
  var keys = Object.keys(datasets).filter(function(key) {
    return !!~key.indexOf(query);
  });

  return keys;
};