检查一个数组是否包含另一个数组中的任何元素,该数组在JavaScript中为空
我有一个目标数组示例:检查一个数组是否包含另一个数组中的任何元素,该数组在JavaScript中为空,javascript,arrays,object,Javascript,Arrays,Object,我有一个目标数组示例:[“土豆”、“橙色”]。我正在进行一个api调用,该调用返回一个包含多个数组的对象,我必须查看数组是否包含任何一个目标数组元素 我有以下代码,但我得到以下错误:UncaughtTypeError:无法读取null的属性“includes” 我知道这是因为对象包含一些空值。我怎样才能解决这个问题 Example: const myArray = [ { Track: ["Potato", "Apple"], ["Banna"],
[“土豆”、“橙色”]
。我正在进行一个api调用,该调用返回一个包含多个数组的对象,我必须查看数组是否包含任何一个目标数组元素
我有以下代码,但我得到以下错误:UncaughtTypeError:无法读取null的属性“includes”
我知道这是因为对象包含一些空值。我怎样才能解决这个问题
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)
此行检查数组对象是否为数组类型且不为空
阅读更多关于
编辑
检查数组是否包含arrayOfValues
中的一个,以及对象是否为数组且不为空
编辑2
检查阵列
是否包含轨迹
数据之一(适用于子阵列(2d等))
此行检查数组对象是否为数组类型且不为空
阅读更多关于
编辑
检查数组是否包含arrayOfValues
中的一个,以及对象是否为数组且不为空
编辑2
检查
数组
是否包含轨迹
数据之一(适用于子数组(2d等))您没有任何名为类型
(或轨迹
)的属性。您的输入也不是有效的Javascript,数组不能有键值对这与promises或Node.js无关。除非你的问题是关于这些标签的,否则请不要使用它们。@CertainPerformance是的,你是对的,很抱歉我的例子不好。我刚刚编辑了,接近我目前得到的。感谢您没有任何名为类型
(或曲目
)的属性。您的输入也不是有效的Javascript,数组不能有键值对这与promises或Node.js无关。除非你的问题是关于这些标签的,否则请不要使用它们。@CertainPerformance是的,你是对的,很抱歉我的例子不好。我刚刚编辑了,接近我目前得到的。谢谢hanks@JamalAbo我现在就试试这个!这太棒了@Mandoxsy,好的,如果它符合要求,别忘了投票并接受答案!这段代码会返回一个带有匹配元素的新数组吗?还是仅仅是bolean?@Mandoxsy all codes返回匹配的数组,(并编辑2->以获得满足跟踪要求的内容)谢谢@JamalAbo我现在就来试试!这太棒了@Mandoxsy,好的,如果它符合要求,别忘了投票并接受答案!这段代码会返回一个带有匹配元素的新数组吗?或者只是bolean?@Mandoxsy所有代码返回匹配的数组(并编辑2->以获得满足跟踪要求的内容)
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;
}
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;
}