我有一个由对象组成的数组。这是一个示例:
[
{events: Array(5), conditions: {…}},
{events: Array(5), conditions: {…}}
{conditions: {…}, awaits: Array(0), events: Array(1), pid: "123"}
]
您看到的对象有所不同。有些具有“ pid”属性,有些则没有。那就是这个问题的全部内容。
我想将带有pid的对象分配给包含pid的对象的新数组。
可以说此数组存储在match.entries中。好吧,这就是我尝试过的。
// aa = match.entries.filter(entry => {return typeof entry.pid !== 'undefined'})
这似乎不起作用。
我的整个代码:
let aa = [];
conditionalMatches.forEach(match => {
aa = match.entries.filter(entry => {return typeof entry.pid !== 'undefined'})
});
返回空数组。
答案 0 :(得分:1)
只需使用array.filter((arrayItem) => arrayItem.pid)
即可使用null
值。而且,由于pid
是字符串类型,因此它将值视为0
,但是将跳过空值,而将其视为""
。
const conditionalMatches = [
[{
events: Array(5),
conditions: {}
},
{
events: Array(5),
conditions: {}
},
{
conditions: {},
awaits: Array(0),
events: Array(1),
pid: ""
},
{
conditions: {},
awaits: Array(0),
events: Array(1),
pid: "123"
}
],
[{
events: Array(5),
conditions: {}
},
{
conditions: {},
awaits: Array(0),
events: Array(1),
pid: "123"
}
],
[]
];
let aa = [];
conditionalMatches.forEach(match => {
let filterArr = match.filter((arrayItem) => arrayItem.pid);
if(filterArr.length !== 0) {
aa.push(filterArr);
}
});
console.log(aa);
答案 1 :(得分:0)
您应该能够使用Array.filter查找定义了pid的对象
conditionalMatches.forEach(match => {
match.entries.forEach(entry => {
if(entry.pid){
aa.push(entry);
}
})
});
根据下面的评论,这确实必须在for循环中发生,您可以做更多类似的事情吗?
data(World)
tm_shape(World) +
tm_fill("well_being", id="name", title="Well-being") +
tm_format("World") +
tm_credits("SOME CREDITS HERE", position=c("left", "bottom"))