我不知道我的术语是否正确,但我创建了以下函数:
function myCollection(zip, municipality, info) {
this.myZip = zip;
this.myMuni = municipality;
this.myInfo= info;
}
然后我创建以下数组并向其中添加数据:
var myArray = new Array();
myArray[0] = new myCollection("1000", "municipality A", "info A");
myArray[1] = new myCollection("2000", "municipality B", "info B");
myArray[2] = new myCollection("2000", "municipality C", "info C");
myArray[3] = new myCollection("3000", "municipality D", "info D");
我想要实现的目标:
- 在 myArray 内搜索 myCollection 中出现特定邮政编码的位置
- 显示 myCollection 中该邮政编码的其余数据
- 对集合中同一邮政编码的所有其他出现执行相同的操作
在上面的示例中搜索 zip“2000”应输出:
2000,市政府 B,信息 B 2000,市政府 C,信息 C
我的思路
我想我会找到字符串出现的位置(索引),然后检索所需的数据,如下所示:
console.log(myArray[i].myInfo);
其中 i 是数组中的索引,其中
myArray[i].myZip
匹配“2000”。
但是,我无法让 indexOf 来搜索我创建的对象中的字符串,也无法检索与相同条件匹配的所有其他事件。
我一开始就选择了正确的方法吗?
如果您知道应该避免使用 jQuery 或其他外部库,我应该如何解决这个问题?
我希望我说得清楚一点 - 感谢您的想法和建议。
最佳答案
你可以使用一个很好的旧while
循环:
function findAll(array, fn) {
var result = [], i = -1;
while (++i < array.length) {
if (fn(array[i]) === true) result.push(array[i]);
}
return result;
}
使用示例:
var a = [{ a: 1 }, { a: 2 }, { a: 3 }];
var result = findAll(a, function (item) {
return item.a !== 2;
});
result; // [{ a: 1 }, { a: 3 }]
关于javascript - 搜索对象数组中的出现情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21627828/