javascript - 搜索对象数组中的出现情况

标签 javascript arrays oop

我不知道我的术语是否正确,但我创建了以下函数:

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/

相关文章:

python - 将 numpy 数组的切片替换为另一个数组中的值

php - 任何人都知道文件大小作为 PHP 中的值对象的良好实现?

javascript - 如何在 TypeScript 中继承现有的 AND js 类编译成 AMD 模块?

javascript - 寻找最小成本组合算法

javascript - 如何在离线时使用 Sentry 记录错误?

javascript - 如何创建将在单击时提交的多选<select>元素

c++ - 在一维数组中索引不规则网格 X、Y、Z 坐标

javascript - 在 React JS 中将值复制到剪贴板而不显示虚拟元素

JavaScript-使用对象的方法从父数组中删除对象

作为参数传递的对象的 JavaScript 调用方法