javascript - 如何从具有部分索引值的对象获取值javascript

标签 javascript jquery

我有一个包含很多键和值的对象。我可以使用索引获得任何值。但是我没有完整的索引,我有一部分,我是否能够根据索引的一部分获取值。

示例:

c = {'select':'MyValue',...}

我可以使用索引获取值,如下所示:

c['select'] = 'MyValue'

我尝试创建这个搜索精确值的函数:

function search(nameKey, c){
    for (var i=0; i < c.length; i++) {
        if (c[i].select === nameKey) {
            return c[i];
        }
    }
}

c['select'] 将返回 'MyValue' 但我需要执行类似 c['Sel']c['select']c['Select']c['selected'] 返回相同的 'MyValue'

最佳答案

嗯,逻辑似乎不是很清楚,并且与如何匹配key也不太相关。

但是这个函数可能对您展示的特定情况有所帮助:

function search(nameKey, obj) {
  if (obj.hasOwnProperty(nameKey)) {
    return obj[nameKey];
  } else {
    var res = Object.keys(obj).filter(function(k) {
      return (k.toLowerCase().indexOf(nameKey.toLowerCase()) > -1) || (nameKey.toLowerCase().indexOf(k.toLowerCase()) > -1);
    });
    return res ? obj[res] : false;
  }
}

说明:

  • 首先我们使用Object#hasOwnProperty()为了检查对象是否将搜索到的名称作为键/属性,我们返回它的值,这将避免循环所有键。
  • 否则我们使用 Object.keys()获取对象的键。
  • 然后我们使用Array#filter()方法通过 keys 数组检查是否存在相关的 key 返回它的值,否则我们返回 false

演示:

function search(nameKey, obj) {
  if (obj.hasOwnProperty(nameKey)) {
    return obj[nameKey];
  } else {
    var res = Object.keys(obj).filter(function(k) {
      return (k.toLowerCase().indexOf(nameKey.toLowerCase()) > -1) || (nameKey.toLowerCase().indexOf(k.toLowerCase()) > -1);
    });
    return res ? obj[res] : false;
  }
}
var c = {
  'select': 'MyValue'
};
console.log(search("Sel", c));

关于javascript - 如何从具有部分索引值的对象获取值javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47422766/

相关文章:

javascript - AngularJS 许多 Controller ng 设计 Material

javascript - 没有常量引用 "this"的 JS 类用于成员访问

jquery - 使用Jquery进行表达式计算

php - 使用 AJAX 和 PHP 监控数据库的变化

javascript - YouTube ajax,.replace() 不起作用

javascript - "Cloning"事件上的 JQuery "Click"未针对所有按钮触发

javascript - 在 Emberjs 中删除记录

javascript - Bootstrap typeahead,更改 bloodhound 建议引擎使用的数据源

javascript - jQuery 计数,单独计数

asp.net - jQuery-AJAX 将下拉列表重新绑定(bind)到存储过程的结果