Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何正确评估阵列中的重复项?[公共关系]_Javascript - Fatal编程技术网

Javascript 如何正确评估阵列中的重复项?[公共关系]

Javascript 如何正确评估阵列中的重复项?[公共关系],javascript,Javascript,假设我有两个api调用,它们返回一个对象列表 const userResult1 = {1: {..} ,2: {..} 3: {..}} const userResult2 = {3: {..} ,4: {..} 5: {..}} 任何一个都可以返回null。我目前正在做的是: if (userResult1 || userResult2 === null) { //false } else { const dataset = [ Object.keys(userResu

假设我有两个api调用,它们返回一个对象列表

const userResult1 = {1: {..} ,2: {..} 3: {..}}
const userResult2 = {3: {..} ,4: {..} 5: {..}}
任何一个都可以返回null。我目前正在做的是:

if (userResult1 || userResult2 === null) {
  //false
} else {
 
  const dataset = [
    Object.keys(userResult1 ),
    Object.keys(userResult2 ),
  ];
  const result = checkIfDuplicateExists(dataset);
  console.log(result) //true or false
}
我没有用于抛出
无法将未定义或null转换为object
的if语句,但是添加if语句可以防止出现这种情况。这是一个好方法吗?

您可以使用

if (userResult1 && userResult2) {
   return Object.keys(userResult1).some(
       Set.prototype.has,
       new Set(Object.keys(userResult2))
   );
}
return false;

如果您不确定将要接收的值的类型,则更明智的做法是检查所需的特定数据类型

因为你在等一个对象

做:

if(userResult1 && userResult2) {
    return true;
}
return false;
如果
userResult1
userResult2
不是
null
未定义

因此,我建议您使用更方便的方法进行检查,例如,如果您需要一个对象,请使用以下函数测试该值:

function isPlainObject(val) {
    return toString.call(val) === '[object Object]'
}

以上仅在普通对象上返回true,例如
{}

如果(userResult1==null | | userResult2==null)
userResult1 | | userResult2==null
意味着“如果
userResult1
是真的或
userResult2
null
”这反过来意味着,如果
userResult1
null
,而
userResult2
为空,则不进入函数体。如果
userResult1
不是
null
userResult2
是,@VLAZ和Jeremy看起来你已经发现了我的错误。我刚刚意识到数据看起来是这样的[[array1],[array2]]如何将所有ID推送到一个新的数组中,使其成为一个平面结构最简单的方法是执行
arr.flat()
。如果数组嵌套得更深,则
arr.flat(3)
(对于三层深度)或
arr.flat(无穷大)
(任意深度)@谢谢你,弗拉兹!刚刚学到了很多新东西,尤其是真理