Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 过滤器嵌套对象结构_Javascript - Fatal编程技术网

Javascript 过滤器嵌套对象结构

Javascript 过滤器嵌套对象结构,javascript,Javascript,我有一个对象,其中的键表示模式。模式包含列的定义,我希望最终得到一个符合特定条件的列列表。我可以为每个人使用a,但我认为也可以通过过滤器或减少来实现;但是,访问嵌套部分并累积结果会遇到困难 我尝试了许多变体,使用reduce、spread操作符,但没有达到预期的结果 希望有人能把我从流沙中拉出来,我的一举一动都会陷得更深 <script type="text/javascript"> let data = { "Schema A" :

我有一个对象,其中的键表示模式。模式包含列的定义,我希望最终得到一个符合特定条件的列列表。我可以为每个人使用a,但我认为也可以通过过滤器或减少来实现;但是,访问嵌套部分并累积结果会遇到困难

我尝试了许多变体,使用reduce、spread操作符,但没有达到预期的结果

希望有人能把我从流沙中拉出来,我的一举一动都会陷得更深

<script type="text/javascript">
let data = {
    "Schema A" : [{"Id" : "1", "Type" : "measure"}, {"Id" : "2", "Type" : "dimension"}, {"Id" : "3", "Type" : "measure"}],
    "Schema B" : [{"Id" : "4", "Type" : "measure"}, {"Id" : "5", "Type" : "dimension"}, {"Id" : "6", "Type" : "measure"}],
    };

var d = Object.entries(data); // convert to array
console.log(d);

let result = d.map(val => {
    return val.filter(x => x[1].Type === 'measure');
});
console.log(result);
</script>

让数据={
“模式A”:[{“Id”:“1”,“类型”:“度量”},{“Id”:“2”,“类型”:“维度”},{“Id”:“3”,“类型”:“度量”}],
“模式B”:[{“Id”:“4”,“类型”:“度量”},{“Id”:“5”,“类型”:“维度”},{“Id”:“6”,“类型”:“度量”}],
};
var d=对象。条目(数据);//转换为数组
控制台日志(d);
让结果=d.map(val=>{
返回val.filter(x=>x[1]。类型=='measure');
});
控制台日志(结果);

您需要从键/值条目中获取值以进行筛选

const
数据={“模式A”:[{Id:“1”,类型:“度量”},{Id:“2”,类型:“维度”},{Id:“3”,类型:“度量”}],“模式B”:[{Id:“4”,类型:“度量”},{Id:“5”,类型:“维度”},{Id:“6”,类型:“度量”},
结果=对象
.条目(数据)
.map(([k,v])=>[k,v.filter(({Type})=>Type==='measure'));
控制台日志(结果)

。作为控制台包装{max height:100%!important;top:0;}
您能否提供输入和预期输出?输入在代码示例中。输出将是一个列数组,其中条件匹配。请在问题中包括预期的输出-目前还不清楚。谢谢Nina。你能不能再详细解释一下这个语法?筛选器(({Type}=>Type==='measure')])您正在传递一个{Type}?我知道.filter(x=>x.property===1234),但这是一种新技术。这种技术是从对象中获取属性并存储在同一个命名变量中。