我有一个嵌套列表,看起来像:
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函数,该函数过滤掉dictionary
list中的每个data
,并返回相同的结构,但不包含dictionary
键,其中存在item
键。
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
});
如何构建内联函数以在子列表中过滤,并在过滤后返回另一个(过滤的)列表和/或count
。
对这个简单的问题很抱歉,我是JS
的新手,但我仍然坚持这个简单的任务。
您可以使用Object.prototype.hasOwnProperty
检查以滤出具有item
属性的对象。
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}
] ];
let out = data.map(arr => arr.filter(e => !e.hasOwnProperty('item')));
console.log(out)