我有一个嵌套的列表,看起来像:
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
的新手,并且对这个简单的任务感到困惑。
答案 0 :(得分:1)
您可以使用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)