当前位置: 首页 > 知识库问答 >
问题:

一个包含对象数组的对象与简单数组的比较

许庆
2023-03-14

我使用Nodejs,有一个对象包含一个object数组(API请求的结果)和一个简单的值数组。

它们看起来是这样的:

// Object > Array > Objects (retrieved from an API request) :
{
    "data": [
        {
            "id": 1,
            "name": "Jimmy"
        },
        {
            "id": 825,
            "name": "Billy"
        },
    ]
}

// Simple array :
[1, 825, …]

如何将包含对象数组的对象与简单数组进行比较?

我要找的是,从简单数组中获取ID,并将它们与另一个“复杂”对象进行比较,以检索name属性以及简单数组中的相应ID和另一个对象属性id,然后将结果存储在一个对象数组中。

简单来说,我希望有这样的结果:

[
    { id: 1, name: "Jimmy" },
    { id: 825, name: "Billy" }
]

当从API请求中检索“复杂”对象时,我尝试了以下操作:

const ids = await axios.get(/* API CALL */);

for (let i in ids.data) {
    ids.data[i].map(el => console.log(el.name));
}

但这给了我一个错误,即我不能mapids.data[I],即使我console.log(ids.data[I])从初始对象到达内部数组时也是如此。

我还尝试直接使用.map()而不使用for...in循环,但这也起不到作用。也尝试了reduce,但结果相同。

我该如何处理这件事呢?请注意,来自API的响应是一个对象包含一个包含数千个对象的数组。

非常感谢

共有1个答案

路裕
2023-03-14

这里有两种不同的单行方法。

null

const result = {

      data: [
        {
          id: 1,
          name: "Jimmy"
        },
        {
          id: 825,
          name: "Billy"
        }
      ]
    };
    
    const ids = [1, 825, 12, 'xx'];
    
    let output = result.data.filter((obj) => ids.includes(obj.id));
    console.log(output);
    
    output = ids.map((id) => result.data.find((o) => o.id === id));    
    console.log(output.filter(obj=>obj !== undefined));
 类似资料:
  • 问题内容: 好的,所以我试图从我用来学习Java的书中进行练习。这是我到目前为止的代码: 以下是确切措词的练习: 修改类Calculator.java,以将所有数字按钮保留在声明为10个元素的数组中,如下所示: 替换从10开始的行 带有创建按钮并将其存储在此数组中的循环。 好的,所以我尝试使用声明数组,但这给了我错误: 这行有多个标记- 按钮无法解析为类型- 按钮无法解析为类型 相反,我尝试了这个

  • 我希望在每个数组中获取多个对象,但我的代码显示了单个对象的操作。下面是我的PHP代码,我如何添加另一个循环来获取多个对象 这是显示单个物体的结果

  • 问题内容: 问题在于确定以下符号之间的权衡: 基于JSON : 基于数组 : 关于同一问题的这篇文章,我已经决定(在前端)使用JSON对象表示法而不是对象数组,因为它符合我的要求,更好的性能和更少的浏览器代码。 但是问题在于列表本身不是静态的。我的意思是,该列表正在生成,即从DB(NoSQL)获取/存储,并通过服务器上的JavaAPI为新条目创建。我无法决定在后端应使用哪种表示法(最终也会影响UI

  • 如果两个集合包含相同的对象,如何进行比较? 当然会打印错误。

  • 问题内容: 我想比较JavaScript代码中2个对象数组。这些对象共有8个属性,但是每个对象都不会有一个值,并且每个数组的大小永远都不能超过8个,因此可能要使用遍历每个对象然后查看对象的值的蛮力方法。 8个属性是执行我想做的最简单的方法,但是在实现之前,我想看看是否有人有一个更优雅的解决方案。有什么想法吗? 问题答案: 编辑:您不能在JavaScript解释器的当前基于浏览器的常见实现中重载运算

  • 我的问题是"为什么?:" 这些数组完全相同。 我的最小示例并没有再现这一点: 这个也没有: 我不知道为什么这些不平等。还有一个额外的问题,我如何比较它们? 我需要一种有效的方法来检查aaa是否在堆栈aa中。 我没有在aa中使用