如何在javascript中通过属性查找数组中的对象?
存在一个包含许多对象的数组。按属性查找此数组中的一个或多个对象是必需的 输入对象:如何在javascript中通过属性查找数组中的对象?,javascript,arrays,Javascript,Arrays,存在一个包含许多对象的数组。按属性查找此数组中的一个或多个对象是必需的 输入对象: var Obj = [ {"start": 0, "length": 3, "style": "text"}, {"start": 4, "length": 2, "style": "operator"}, {"start": 4, "length": 3, "style": "error"} ]; 输出结果:(搜索值为4的“开始”) _findItemByValue(Obj,“
var Obj = [
{"start": 0, "length": 3, "style": "text"},
{"start": 4, "length": 2, "style": "operator"},
{"start": 4, "length": 3, "style": "error"}
];
输出结果:(搜索值为4的“开始”)
_findItemByValue(Obj,“开始”,4)
与除IE6、IE7、IE8之外的所有设备兼容,但存在
if(!Array.prototype.filter){
Array.prototype.filter=函数(fn,上下文){
var i,
价值
结果=[],
长度;
如果(!this | | typeof fn!=“function”| |(fn instanceof RegExp)){
抛出新的TypeError();
}
长度=此长度;
对于(i=0;i
使用数组函数
var Obj=[
{“开始”:0,“长度”:3,“样式”:“文本”},
{“开始”:4,“长度”:2,“样式”:“运算符”},
{“开始”:4,“长度”:3,“样式”:“错误”}
];
var result=Obj.filter(x=>x.start==4);
控制台日志(结果)代码>不到一分钟即可解决您自己的问题!太棒了。(别喝了,沃德,你看双重…)沃德怎么了?这只是问答风格中的一个小技巧。问题是这是一个常见且相当琐碎的问题。你确认没有重复的吗?@BlueSkies我找到了重复的,但是上面的解决方案很糟糕。
var result = [
{"start": 4, "length": 2, "style": "operator"},
{"start": 4, "length": 3, "style": "error"}
];
var _findItemByValue = function(obj, prop, value) {
return obj.filter(function(item) {
return (item[prop] === value);
});
}
if (!Array.prototype.filter) {
Array.prototype.filter = function (fn, context) {
var i,
value,
result = [],
length;
if (!this || typeof fn !== 'function' || (fn instanceof RegExp)) {
throw new TypeError();
}
length = this.length;
for (i = 0; i < length; i++) {
if (this.hasOwnProperty(i)) {
value = this[i];
if (fn.call(context, value, i, this)) {
result.push(value);
}
}
}
return result;
};
}