【问题标题】:fetch into array of object in javascript [duplicate]在javascript中获取对象数组[重复]
【发布时间】:2021-09-14 03:23:14
【问题描述】:

我正在尝试获取对象数组。

我有:arrayOfObject :

0: {code: "YJYDWO1", route_id: 1}
1: {code: "YJYDWO2", route_id: 2}
2: {code: "YJYDWO3", route_id: 3}
3: {code: "YJYDWO4", route_id: 4}
4: {code: "YJYDWO5", route_id: 5}

我想使用 find 或任何没有 for 循环的东西来获取 route_id = 2 的对象(示例)。

我使用 for 循环来做到这一点:

for(let i=0; i<arrayOfObject.lenght; i++){
  if(arrayOfObjet[i].route_id == 2){
   // do what you want
}
}

那行得通,但是如果我在 arrayOfObject 中有 100 万个数据对象需要花费大量时间,那么我最好使用 find 或 javascript 中的任何方法来完成它。

如何做到这一点?

【问题讨论】:

  • 是的!但是我需要其他方法,例如 find hach​​set ...经过一些搜索后,hachset 更适合在短时间内过滤大数据。 @Kinglish

标签: javascript arrays angular object


【解决方案1】:

你可以使用Array.find之类的东西

let item = arrayOfObjects.find(x => x.route_id === 2)

但这只是隐藏了 for 循环。因为遍历数组是找到元素的唯一可能性。

为了加快速度(如果route_id 是唯一的),您可以在找到元素后将break 退出循环。

for (let element of arrayOfObject) {
  if (element.route_id === 2) {
    // Do your thing
    break;
  }
}

如果您必须进行多次搜索(同样route_id 是唯一的),您可能应该将您的数组转换为地图或类似的东西,这样您就可以通过其键直接访问该对象

// Do this once in the beginning
let m = new Map();
for (let e of arrayOfObject)
  m.set(e.route_id, e);


//Retrieve an element from the map
let x = m.get(2);

【讨论】:

    猜你喜欢
    • 2020-11-24
    • 2020-10-02
    • 2014-05-26
    • 2019-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-07
    相关资源
    最近更新 更多