匹配变量值的Javascript映射数据

匹配变量值的Javascript映射数据,javascript,reactjs,char,Javascript,Reactjs,Char,我一直在做一个图表项目,我需要在图表区域上移动鼠标时使用工具提示显示一些值。这是我需要映射的数据- { "item":[ { "name":"abcd", "in":12, "out":2, "net":10, "child":[ { "name":"Test", "in":2,

我一直在做一个图表项目,我需要在图表区域上移动鼠标时使用工具提示显示一些值。这是我需要映射的数据-

    {  
   "item":[  
      {  
         "name":"abcd",
         "in":12,
         "out":2,
         "net":10,
         "child":[  
            {  
               "name":"Test",
               "in":2,
               "out":2,
               "net":0,
               "child":null
            },
            {  
               "name":"Max",
               "in":10,
               "out":0,
               "net":10,
               "child":null
            }
         ]
      },
      {  
         "name":"Dress",
         "in":43,
         "out":0,
         "net":43,
         "child":[  
            {  
               "name":"Class-1",
               "in":35,
               "out":0,
               "net":35,
               "child":null
            },
            {  
               "name":"One",
               "in":8,
               "out":0,
               "net":8,
               "child":null
            }
         ]
      }
   ]
}
当它与
name
中的
等任何变量匹配时,我需要映射
child


我使用这种方式
jsondata.map(sale=>sale.child)
但它映射所有子值。我该怎么做呢?

您首先需要过滤并使用地图。例如,如果您正在查找包含字符串“abc”的记录的子项,您将这样做

const records = items.filter(item => item.name.indexOf("abc") > -1);
const children = records.map(r => r.child)

首先需要过滤并使用地图。例如,如果您正在查找包含字符串“abc”的记录的子项,您将这样做

const records = items.filter(item => item.name.indexOf("abc") > -1);
const children = records.map(r => r.child)

您可以使用Filter按名称进行筛选,然后像这样映射它

let child = item
  .filter(sale => sale.name === "abcd" || sale.in === "value")
  .map(sale => sale.child);

console.log(child);

您可以使用Filter按名称进行筛选,然后像这样映射它

let child = item
  .filter(sale => sale.name === "abcd" || sale.in === "value")
  .map(sale => sale.child);

console.log(child);

您可以先过滤
项,然后使用
map
。如果需要多个条件:

item.filter(sale => sale.name === "abcd" || sale.in === "value")
    .map(sale => console.log(sale.child));

您可以先过滤
项,然后使用
map
。如果需要多个条件:

item.filter(sale => sale.name === "abcd" || sale.in === "value")
    .map(sale => console.log(sale.child));

查看该数据的预期输出或您期望得到的结果将非常有用…您好,谢谢。当我选择data
“name”:“abcd”
时,我的预期数据将是``“child”:[{“name”:“Test”,“in”:2,“out”:2,“net”:0,“child”:null},{“name”:“Max”,“in”:10,“out”:0,“net”:10,“child”:null}]“``我还不清楚,你想把
数组的每个outter对象映射到
数组,但只有当子数组的
in
变量的和等于父
in
值时,才能看到该数据的预期输出,或者你期望得到的结果……您好,谢谢。什么时候我选择数据
“name”:“abcd”
我期望的数据是“child”:[{“name”:“Test”,“in”:2,“out”:2,“net”:0,“child”:null},{“name”:“Max”,“in”“:10,“out”:0,“net”:10,“child”:null}”``我还不清楚,您想将
数组的每个outter对象映射到
数组,但是只有当孩子的
变量中的
之和等于
值中的父
时,它才起作用,谢谢。虽然我需要动态值,但我做到了that@ManzurulHoqueRumi通过替换if(sale.name==“abcd”| | sale.in==“value”)返回true,可以使if更简单;sale=>sale.name==“abcd”| | sale.in==“value”成功了,谢谢。虽然我需要动态值,但我做到了that@ManzurulHoqueRumi通过替换if(sale.name==“abcd”| | sale.in==“value”)返回true,可以使if更简单;带sale=>sale.name==“abcd”| | sale.in==“value”