gpt4 book ai didi

javascript - 使用 linqjs 使用另一个数组中的值过滤一个数组

转载 作者:行者123 更新时间:2023-11-28 11:09:14 25 4
gpt4 key购买 nike

第一个是对象数组:

let objectArray = [{
FullName: "Person1",
PersonId: "id1"
},
{
FullName: "Person2",
PersonId: "id2"
},
{
FullName: "Person3",
PersonId: "id3"
},
{
FullName: "Person4",
PersonId: "id4"
}
];

第二个是包含一些 id 的字符串数组。

let idsArray= ["id1", "id2", "id3"];

我需要删除第一个数组中 id 包含在第二个数组中的对象。

预期结果:

firstArray = [{
FullName: "Person4",
PersonId: "id4"
}];

探索 Linqjs 文档我发现 Except() 方法允许我使用第二个数组作为“过滤器”从第一个数组中删除元素。

为了使用此方法,我需要从 objectArray 创建一个新数组,该数组仅包含 id 包含在 idsArray 中的元素,以将其用作参数.

示例:

let filteredArray = Enumerable.From(objectArray).Except(theNewArray).ToArray();

要创建这个新数组,我可以使用 Linqjs 中的 Where() 方法。

我的问题从这里开始,因为考虑到我有一个要过滤的 id 数组,我不知道如何创建这个新数组。

最佳答案

您可以使用 Vanilla JavaScript 的 array.filterarray.includes像这样:

let objectArray = [
{FullName: "Person1", PersonId: "id1"},
{FullName: "Person2", PersonId: "id2"},
{FullName: "Person3", PersonId: "id3"},
{FullName: "Person4", PersonId: "id4"}
];

let excludeIdsArray= ["id1", "id2", "id3"];

let newObj = objectArray.filter(obj => !excludeIdsArray.includes(obj.PersonId))

console.log(newObj)

或者,您可以使用 array.reducearray.includes像这样:

let objectArray = [
{FullName: "Person1", PersonId: "id1"},
{FullName: "Person2", PersonId: "id2"},
{FullName: "Person3", PersonId: "id3"},
{FullName: "Person4", PersonId: "id4"}
];

let excludeIdsArray= ["id1", "id2", "id3"];

let newObj = objectArray.reduce((arr, myObject) => {
if(!excludeIdsArray.includes(myObject.PersonId)) {
arr.push(myObject)
}
return arr
}, [])


console.log(newObj)

关于javascript - 使用 linqjs 使用另一个数组中的值过滤一个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51159026/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com