我使用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));
}
但这给了我一个错误,即我不能map
ids.data[I]
,即使我console.log(ids.data[I])
从初始对象到达内部数组时也是如此。
我还尝试直接使用.map()
而不使用for...in
循环,但这也起不到作用。也尝试了reduce
,但结果相同。
我该如何处理这件事呢?请注意,来自API的响应是一个对象包含一个包含数千个对象的数组。
非常感谢
这里有两种不同的单行方法。
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中使用