迭代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不是函数的错误。是否有其他选择>?