迭代javascript对象以查找匹配项

迭代javascript对象以查找匹配项,javascript,loops,object,match,Javascript,Loops,Object,Match,我试图在一个对象中循环并找到一个特定的匹配项。当我找到一个匹配项时,我想提取对象中的其他键值对。如果我有一个这样的对象: [{"ID":"3","NAME":"John","Age":"15"},{"ID":"4","NAME":"Mike","Age":"10"},{"ID":"5","NAME":"Tim","Age":"18"},{"ID":"6","NAME":"Ken","Age":"20"}] 我有一个搜索/匹配值 var MatchValue = 4; 如何遍历对象以找到等于4

我试图在一个对象中循环并找到一个特定的匹配项。当我找到一个匹配项时,我想提取对象中的其他键值对。如果我有一个这样的对象:

[{"ID":"3","NAME":"John","Age":"15"},{"ID":"4","NAME":"Mike","Age":"10"},{"ID":"5","NAME":"Tim","Age":"18"},{"ID":"6","NAME":"Ken","Age":"20"}]
我有一个搜索/匹配值

var MatchValue = 4;

如何遍历对象以找到等于4的“ID”并显示对象中的“NAME”和“AGE”?在此方面的任何帮助都将不胜感激。提前谢谢#杰森努布

您要做的是筛选数组。您可以使用JavaScript的
filter
函数来实现这一点。此代码将获取ID等于4的元素

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

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
如果你有石器时代的浏览器,你可以这样做

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;
  };
}
if(!Array.prototype.filter){
Array.prototype.filter=函数(fun/*,thisp*/){
var len=this.length>>>0;
如果(乐趣的类型!=“功能”)
抛出新的TypeError();
var-res=[];
var thisp=参数[1];
对于(变量i=0;i
我从另一个堆栈溢出答案中得到了这个答案,但我可以解释它


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

我发现关于array.filter不是函数的错误。是否有其他选择>?