【问题标题】:Find a value in array of objects在对象数组中查找值
【发布时间】:2022-08-18 15:26:26
【问题描述】:
  const objectTest = {
    Shoes: [
      { id: 1, name: \"xxx\", image: \"xxxxxx\" },
      { id: 2, name: \"yyy\", image: \"yyyyyy\" },
    ],
    Top: [
      { id: 1, name: \"zzz\", image: \"zzzzzz\" },
      { id: 2, name: \"aaa\", image: \"aaaaaa\" },
    ],
  };

我知道我可以使用 find 方法。

 const item = objectTest.Shoes.find((p) => p.name === \"xxx\");
 console.log(item);  ///{id: 1, name: \'xxx\', image: \'xxxxxx\'}

但是如果我不知道“xxx”属于Shoes 组怎么办。如何找到\"xxx\" 并返回{ id: 1, name: \"xxx\", image: \"xxxxxx\" }

    标签: javascript


    【解决方案1】:

    最简单的方法是首先展平对象值:

    Object.values(objectTest).flat()
    

    然后你可以正常找到它:

    const item = Object.values(objectTest).flat().find((p) => p.name === "xxx");
    

    如果你想知道它属于哪个“组”,你必须遍历Object.entries(objectTest)

    【讨论】:

    • 谢谢你!!!!!!!!
    【解决方案2】:

    如果ShoesTop 的架构相同,则可以将它们展平

      const objectTest = {
        Shoes: [
          { id: 1, name: "xxx", image: "xxxxxx" },
          { id: 2, name: "yyy", image: "yyyyyy" },
        ],
        Top: [
          { id: 1, name: "zzz", image: "zzzzzz" },
          { id: 2, name: "aaa", image: "aaaaaa" },
        ],
      };
    
    const findX = (objectTest, name) => {
       return [...objectTest.Shoes, ...objectShoes.Top].find((p) => p.name === "xxx");
    }
    

    【讨论】:

    • 谢谢你!!!!!!!!
    【解决方案3】:

    您可以使用 for-in 循环遍历数组,然后可以找到特定的对象数组。

    const objectTest = {
        Shoes: [
          { id: 1, name: "xxx", image: "xxxxxx" },
          { id: 2, name: "yyy", image: "yyyyyy" },
        ],
        Top: [
          { id: 1, name: "zzz", image: "zzzzzz" },
          { id: 2, name: "aaa", image: "aaaaaa" },
        ],
      };
      
      let obj;
      for(let prop in objectTest) {
        obj = objectTest[prop].find(x=>x.name == "xxx");
        if(obj)
            break;    
      }
      
      console.log(obj)

    【讨论】:

    • 谢谢你啊!!!
    猜你喜欢
    • 2022-11-04
    • 1970-01-01
    • 2020-07-22
    • 2016-04-17
    • 2017-12-02
    • 1970-01-01
    • 1970-01-01
    • 2019-12-12
    • 2020-12-30
    相关资源
    最近更新 更多