检查一个数组是否包含另一个数组中的任何元素,该数组在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;
}