Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.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_Node.js_List_Lambda_Filter - Fatal编程技术网

Javascript 筛选出嵌套列表中具有特定键的字典元素

Javascript 筛选出嵌套列表中具有特定键的字典元素,javascript,node.js,list,lambda,filter,Javascript,Node.js,List,Lambda,Filter,我有一个嵌套列表,看起来像: var data = [[ {item: 'top_X', pos:1}, {name: 'person1', value: 1}, {name: 'person2', value: 1} ],[ {item: 'top_Y', pos:1}, {name: 'person1', value: 2}, {name: 'person2', value: 2} ],[ {item: 'top_Z', pos:1},

我有一个嵌套列表,看起来像:

var data = [[
    {item: 'top_X', pos:1},
    {name: 'person1', value: 1},
    {name: 'person2', value: 1}
],[
    {item: 'top_Y', pos:1},
    {name: 'person1', value: 2},
    {name: 'person2', value: 2}
],[
    {item: 'top_Z', pos:1},
    {name: 'person1', value: 1}
] ];
js
中,我试图使用lambda函数过滤
数据列表中的每个
字典
,并返回相同的结构,但没有
字典
,其中

 all = data.map(x => {
        return x; // returns the whole list
    });

    //
    fileredOutList = data.map(x => {
       return x.filter  ?? ..
    }); // Expected output list: 
 //      data = [[{name: 'person1', value: 1},
 //              {name: 'person2', value: 1}],
 //             [{name: 'person1', value: 2},
 //              {name: 'person2', value: 2}],
 //             [{name: 'person1', value: 1}]]


fileredOutListCount = data.map(x => {
   //  return x.filter  ?? .. .count()
   // return count elements after filter --> 3
});
如何在子列表中构建一个内联函数进行筛选,并在筛选后返回另一个(筛选)列表和/或
计数


很抱歉问这么简单的问题,我是新来的
JS
,我一直在做这个简单的任务。

您可以使用
Object.prototype.hasOwnProperty
来筛选出具有
item
属性的对象

var数据=[[
{项目:'top_X',位置:1},
{name:'person1',值:1},
{name:'person2',值:1}
],[
{项目:'top_Y',位置:1},
{name:'person1',值:2},
{name:'person2',值:2}
],[
{项目:'top_Z',位置:1},
{name:'person1',值:1}
] ];
let out=data.map(arr=>arr.filter(e=>!e.hasOwnProperty('item'));

console.log(out)
您的要求/问题太复杂了。对于
.filter()
回调,您只需要一个函数(命名或匿名)。如果正在调用的数组
.filter()
存储在另一个数组、对象或某个自定义“东西”中,则这与此无关。它仍然只是一个数组。只需测试
.filter()中是否存在
item
属性(
returntypeof x.item==“undefined”
)callback@Andreas
返回x.item==“未定义”
返回!(x.item)
也会做同样的事情,
typeof
check在这里是无用的。