gpt4 book ai didi

javascript - 在 JavaScript 中检查一个数组是否包含另一个数组中带有 null 的元素

转载 作者:行者123 更新时间:2023-12-02 23:24:31 25 4
gpt4 key购买 nike

我有一个目标数组示例: ["Potato", "Orange"] 。我正在进行一个 api 调用,该调用返回一个具有多个数组的对象,我必须查看该数组是否包含任何一个目标数组元素。

我有以下代码段,但出现以下错误:未捕获类型错误:无法读取 null 的属性“包含”

我知道这是因为该对象包含一些 Null 值。我怎样才能解决这个问题?

Example:    const myArray = [
{
Track: ["Potato", "Apple"],
["Banna"],
["Potato", "Batman", "Orange"]
Type: ["Some", "Stuff"]
},
{
Track: null
Type: ["Some", "Stuff"]
}
]

const value = "Potato"

const matchingSession = myArray.filter((obj) => value.some(x => { return obj.types.includes(x) || obj.tracks.includes(x)}));

它应该返回:

[
["Potato", "Apple"],
["Potato", "Batman", "Orange"]
]

这只是一个例子。数组中可以有多个对象。

最佳答案

myArray.filter((arr) => Array.isArray(arr) && arr.length > 0)

此行检查数组对象是否是数组类型且不为空

了解更多关于 filter

编辑

const arrayOfValues = ["Potato", "Apple"];
myArray.filter((arr) => {

return Array.isArray(arr) && CheckArray(arrayOfValues, arr) && arr.length > 0
});
function CheckArray(Array, ArrayToCheck) {
let found = false;
for (const value of Array) {
if (ArrayToCheck.includes(value)) {
found = true;
}
}
return found;
}

检查数组是否包含 arrayOfValues 之一以及该对象是否是数组且不为空!

编辑2

const myArray = [
{
Track: ["Potato", "Apple"],
data: [["Banna"],
["Potato", "Batman", "Orange"],
["Some", "Stuff"]],
},
{
Tack: null,
data: ["Some", "Stuff"],
},
];
myArray.map((arr) => {
return Array.isArray(arr.data) && CheckArray(arr.Track, arr.data);
}).filter(_ => !!_);

function CheckArray(arr, ArrayToCheck) {
if (!arr || !Array.isArray(arr)) {
return ArrayToCheck;
}
const foundArray = [];
if (ArrayToCheck.every(item => Array.isArray(item))) {
for (const subArr of ArrayToCheck) {
const ResultArray = CheckArray(arr, subArr);
if (ResultArray.length > 0) {
foundArray.push(ResultArray);
}
}
} else {
if (ArrayToCheck.map(val => arr.includes(val)).includes(true)) {
foundArray.push(ArrayToCheck);
}
}
return foundArray;
}

检查数组是否包含Track数据之一(适用于子数组(二维等))

关于javascript - 在 JavaScript 中检查一个数组是否包含另一个数组中带有 null 的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56798740/

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