gpt4 book ai didi

javascript - 使用具有多个值的第二个数组过滤对象数组

转载 作者:行者123 更新时间:2023-12-02 21:09:57 26 4
gpt4 key购买 nike

我正在尝试编写一个函数来获取“父”数组中的第一个对象,拉出子字段(位于该数组中)并使用该字段来过滤名为“子”的第二个对象。

我想从子对象中获取父对象子字段中的所有相关记录。

预期输出

  child: [
{
**id: 1,**
name: 'Jimmy Yukka',
},
{
**id: 2,**
name: 'Up North',
}

输入

 Parent: [
{
**id: 1,**
name: 'Melbourne Bands',
**child: [1, 2]**
}

我有以下数据

 Parent: [
{
**id: 1,**
name: 'Melbourne Bands',
**child: [1, 2]**
},
{
id: 2,
name: 'Sydney Bands',
child: [3]
}
],
child: [
{
**id: 1,**
name: 'Jimmy Yukka',
},
{
**id: 2,**
name: 'Up North',
},
{
id: 3,
url: 'jimmyyukka.com',
name: 'INXS',
CreatedByUserId: 1
}
],

目前我实现的功能代码:

  currentChildrenIds(ParentId, parentData, childData) {
const singleParentRecord = parentData.filter(function(parent) {
return parent.id === ParentId;
});
const parentsChildIds = singleParentRecord[0].books;


const childRecords = childData.filter(function(child) {
return child.id === parentsChildIds
});


return childRecords
}

注释这一点就是错误的地方

const childRecords = childData.filter(function(child) {
return child.id === parentsChildIds

这里的这一点也有点垃圾(对 [0] 进行硬编码),但不是我不确定应该如何正确编码

 const parentsChildIds = singleParentRecord[0].books;

最佳答案

这里,

const childRecords = childData.filter(function(child) {
return child.id === parentsChildIds

parentsChildIds 是对数组的引用:您不想测试 id 是否 === 到引用,

您必须明确并检查 id 是否包含在数组中:

const childRecords = childData.filter(function(child) {
return parentsChildIds.includes(child.id)

关于确实感觉很奇怪的 singleParentRecord[0],因为您知道方法过滤器将始终返回大小为 1 或 0 的数组,您可以使用find方法代替filter

<小时/>

也在函数式编程中(数组函数,如过滤器、映射、查找...)我建议您阅读一些有关箭头函数语法的内容,因为:

  1. 句法更加密集,当多个函数链接在一起时,您的大脑更容易理解
  2. 如果您想使用在函数外部定义的变量,则该变量只能在箭头函数内部使用

带有箭头函数的代码:

const childRecords = childData.filter((child) => {
return child.id === parentsChildIds
}

关于javascript - 使用具有多个值的第二个数组过滤对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61125103/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com