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在这里是无用的。