我有一个这样的数组:
let swCharacters = [
{ id: 0, name: "Luke", seriesId: 1 },
{ id: 1, name: "Han", seriesId: 1 },
{ id: 2, name: "Din Djarin", seriesId: 4 },
{ id: 3, name: "Anakin", seriesId: 2 },
{ id: 4, name: "Yoda", seriesId: 1 },
{ id: 5, name: "Grogu", seriesId: 4 }
];
而且我想过滤掉除 seriesId 为 4 的所有内容之外的所有内容,因此我发现这有帮助:
swCharacters = swCharacters.filter(x => x.seriesId === 4).map(x => x.seriesId)
console.log("The Mandalorian: ", swCharacters);
但这并没有做我需要它做的事情。
它只是创建了一个只有 4 的数组,比如 [4, 4]。
我需要过滤后的数组看起来像:
[{ id: 3, name: "Din Djarin", seriesId: 4 }, { id: 6, name: "Grogu", seriesId: 4 }]
我可以用 javascript 做到这一点吗?
谢谢!
答案 0 :(得分:2)
您可以直接在 swCharacters 上调用过滤器。
const res = swCharacters.filter(x => x.seriesId === 4);
let swCharacters = [{
id: 0,
name: "Luke",
seriesId: 1
},
{
id: 1,
name: "Han",
seriesId: 1
},
{
id: 2,
name: "Din Djarin",
seriesId: 4
},
{
id: 3,
name: "Anakin",
seriesId: 2
},
{
id: 4,
name: "Yoda",
seriesId: 1
},
{
id: 5,
name: "Grogu",
seriesId: 4
}
];
const res = swCharacters.filter(x => x.seriesId === 4);
console.log(res)
当你用地图链接它时,它首先会应用
map(x => x.seriesId)
这将返回一个包含所有 seriesId 的数组作为过滤器的输入。过滤器然后检查数组中所有值为 4 的 seriesIds 并将其作为数组返回。
这将导致
[4, 4]
let swCharacters = [{
id: 0,
name: "Luke",
seriesId: 1
},
{
id: 1,
name: "Han",
seriesId: 1
},
{
id: 2,
name: "Din Djarin",
seriesId: 4
},
{
id: 3,
name: "Anakin",
seriesId: 2
},
{
id: 4,
name: "Yoda",
seriesId: 1
},
{
id: 5,
name: "Grogu",
seriesId: 4
}
];
swCharacters = swCharacters.filter(x => x.seriesId === 4).map(x => x.seriesId)
console.log(swCharacters);
答案 1 :(得分:2)
你不应该使用map函数,只是过滤,像这样:
swCharacters = swCharacters.filter(x => x.seriesId === 4)
console.log("The Mandalorian: ", swCharacters);