![](/img/trans.png)
[英]How to create a new array of objects based on the values of two existing arrays?
[英]Create a new array of boolean values by comparing two arrays with objects
我有一个关于创建 JavaScript 数组的问题。 这就是我想做的。
我有两个数组。 每个数组中都有对象。
第一个数组正好有 5 个对象,每个对象都有一个键/值对(id/name)。 这个数组总是有 5 个对象。
这是它的样子......
[
{
"id": 1,
"name": "AnalyticalAdmin"
},
{
"id": 2,
"name": "Analyst"
},
{
"id": 4,
"name": "AdminReviewer"
},
{
"id": 5,
"name": "SystemAdministrator"
},
{
"id": 6,
"name": "CaseworkSTRTechLeader"
}
]
第二个数组将具有...
没有对象,
4个或更少的物体,
正好 5 个对象。
在下面的示例中,第二个数组只有第一个数组中的 5 个对象中的一个...
[
{
"id": 4,
"name": "AdminReviewer"
}
]
我需要创建第三个数组,其中正好有 5 个布尔值,这些值是通过比较前两个数组来确定的。
例如,基于上面的前两个数组,第三个数组将是......
[false, false, true, false, false]
第三个数组看起来像这样的原因是因为“AdminReviewer”是第一个数组中的第三个对象,所以第三个数组中的第三个布尔值将为真(因为它是匹配的)。
但是因为第一个数组中的第一个、第二个、第四个和第五个对象在第二个数组中不存在,所以它们在第三个数组中的布尔等效项将是错误的。
为此,我知道我需要对前两个数组执行比较函数以创建第三个数组(布尔值),或者我需要在第一个数组上运行for 循环,将其与第二个数组进行比较以创建第三个数组(布尔值)。
谁能帮我这个?
这可以按如下方式完成:
const filterStrings = filterArray.map(o => JSON.stringify(o));
const result = baseArray.map(o => filterStrings.includes(JSON.stringify(o)));
请看下面的可运行代码,看看它是如何工作的。
const baseArray = [ { "id": 1, "name": "AnalyticalAdmin" }, { "id": 2, "name": "Analyst" }, { "id": 4, "name": "AdminReviewer" }, { "id": 5, "name": "SystemAdministrator" }, { "id": 6, "name": "CaseworkSTRTechLeader" } ]; const filterArray = [ { "id": 4, "name": "AdminReviewer" } ]; const filterStrings = filterArray.map(o => JSON.stringify(o)); const result = baseArray.map(o => filterStrings.includes(JSON.stringify(o))); console.log(result);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.