首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >遍历javascript对象以查找匹配项

遍历javascript对象以查找匹配项
EN

Stack Overflow用户
提问于 2015-10-31 03:52:47
回答 1查看 1.5K关注 0票数 0

我正在尝试遍历一个对象并找到一个特定的匹配项。当我找到一个匹配项时,我想拉出对象中的其他键值对。所以如果我有一个这种形式的对象:

代码语言:javascript
复制
[{"ID":"3","NAME":"John","Age":"15"},{"ID":"4","NAME":"Mike","Age":"10"},{"ID":"5","NAME":"Tim","Age":"18"},{"ID":"6","NAME":"Ken","Age":"20"}]

并且我有一个搜索/匹配值

代码语言:javascript
复制
var MatchValue = 4;

如何遍历我的对象以找到等于4的"ID“,并显示该对象的"NAME”和"AGE“?在这方面的任何帮助都将非常感谢。提前谢谢。#JsonNoob

EN

回答 1

Stack Overflow用户

发布于 2015-10-31 03:56:34

你要做的就是过滤你的数组。您可以使用JavaScript的filter函数来完成此操作。这段代码将得到ID等于4的元素。

然后,您可以使用点或括号表示法来访问此对象的属性。

代码语言:javascript
复制
var myObject = array.filter(function(element) {
    return element.ID === '4';
}

console.log(myObject.name);     // Prints name to console
console.log(myObject.age);      // Prints age to console

如果你有一个石器时代的浏览器,你可以做到这一点。

代码语言:javascript
复制
if (!Array.prototype.filter) {
  Array.prototype.filter = function(fun /*, thisp*/) {
    var len = this.length >>> 0;
    if (typeof fun != "function")
    throw new TypeError();

    var res = [];
    var thisp = arguments[1];
    for (var i = 0; i < len; i++) {
      if (i in this) {
        var val = this[i]; // in case fun mutates this
        if (fun.call(thisp, val, i, this))
        res.push(val);
      }
    }
    return res;
  };
}

这是我从另一个Stack Overflow答案中得到的,但我可以解释它。

这将检查您的浏览器是否具有Array.prototype.filter功能。一些较旧版本的IE没有此功能,因此您可以手动定义该函数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33443900

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档