【问题标题】:Find a value by key from array of objects [duplicate]从对象数组中按键查找值[重复]
【发布时间】:2023-01-17 16:53:52
【问题描述】:

我有大量的对象,需要按键查找对象的名称,我该如何使用优化的方式来做到这一点。

const key = 2;
const arr = [ {id: 1, text: '1111'},  {id: 2, text: '2222'}, {id: 3, text: '333'},]

我只需要返回文本“2222” 原始数组有一个 154 个对象,这就是为什么我需要最优化的方法。

arr.forEach((obj) => {
    Object.keys(obj).forEach((key) => {
        console.log("key : " + key + " - value : " + obj[key]);
  });
});

【问题讨论】:

  • 你试过Array.prototype.find()吗?
  • 您是否可以将数据存储在对象中?例如{ 1: { text: '1111' }, 2: { text: '2222' }, ... }。然后你可以用yourObject[key]访问它。这是使 afaik 高效的唯一方法

标签: javascript reactjs


【解决方案1】:

您可以使用 forEachfor 循环来完成

在优化方面for loop是最快的

var key = 2;
const arr = [ {id: 1, text: '1111'},  {id: 2, text: '2222'}, {id: 3, text: '333'},]

arr.forEach((obj) => {
      if (obj.id == key) {
        console.log(obj.text);
      }
});


for (let i = 0; i < arr.length; i++) {
     if (arr[i].id == key) {
        console.log(arr[i].text)  
     }        
}

【讨论】:

    【解决方案2】:

    JavaScript 有很棒的数组方法来做这些事情。在你的情况下,我会使用 array.find 来实现你所追求的。您可以阅读更多相关信息here

    const key = 2;
    const arr = [ {id: 1, text: '1111'},  {id: 2, text: '2222'}...]
    
    const result = arr.find((item) => item.id === key).text;
    console.log(result) // will print '2222'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-08
      • 2020-02-15
      • 1970-01-01
      • 2016-04-17
      • 2016-07-15
      • 1970-01-01
      • 1970-01-01
      • 2021-10-04
      相关资源
      最近更新 更多