Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.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_Jquery_Arrays_Polymer - Fatal编程技术网

如何在javascript中以最小的复杂性从数组中获取不匹配的数组值?

如何在javascript中以最小的复杂性从数组中获取不匹配的数组值?,javascript,jquery,arrays,polymer,Javascript,Jquery,Arrays,Polymer,您好,我是java脚本新手,我想为下面的场景提供一些解决方案。我有一个多维坐标数组 var coordinateArr = [ [[45.56,45.57],[44.36,44.37]], [[42.26,42.37],[42.46,42.57]], [[41.56,41.57],[41.36,41.37],[41.26,41.27]] ]; 我还有一个多维数组,比

您好,我是java脚本新手,我想为下面的场景提供一些解决方案。我有一个多维坐标数组

var coordinateArr = [ [[45.56,45.57],[44.36,44.37]],
                      [[42.26,42.37],[42.46,42.57]],
                      [[41.56,41.57],[41.36,41.37],[41.26,41.27]] 
                    ];
我还有一个多维数组,比如

var  anotherArr = [ [[41.56,41.57],[41.36,41.37],[41.26,41.27]], 
                     [[42.26,42.37],[42.46,42.57]]
                  ]; 
现在我想从coordinarrear中提取不匹配的值,如

var unmatchedArr= [[[45.56,45.57],[44.36,44.37]]];

如何执行此操作?

尝试
筛选
将不
的数组元素包含在另一个数组中:

var坐标=[
[
[45.56, 45.57],
[44.36, 44.37]
],
[
[42.26, 42.37],
[42.46, 42.57]
],
[
[41.56, 41.57],
[41.36, 41.37],
[41.26, 41.27]
]
];
var anotherArr=[
[
[41.56, 41.57],
[41.36, 41.37],
[41.26, 41.27]
],
[
[42.26, 42.37],
[42.46, 42.57]
]
];
var unmatchdarr=coordinarr.filter(e=>!另一个arr.includes(e));

控制台日志(不匹配)
尝试
筛选
将非
的数组元素包括在另一个数组中
d:

var坐标=[
[
[45.56, 45.57],
[44.36, 44.37]
],
[
[42.26, 42.37],
[42.46, 42.57]
],
[
[41.56, 41.57],
[41.36, 41.37],
[41.26, 41.27]
]
];
var anotherArr=[
[
[41.56, 41.57],
[41.36, 41.37],
[41.26, 41.27]
],
[
[42.26, 42.37],
[42.46, 42.57]
]
];
var unmatchdarr=coordinarr.filter(e=>!另一个arr.includes(e));

控制台日志(不匹配)Javascript通过引用进行数组比较,因此您不能简单地测试一个组中的数组是否在另一个组中,除非它们是相同的对象。您需要测试每个值,或者将数组转换为按值进行比较的字符串。对于数组,可以使用
JSON.stringify
。如果您用另一个数组创建了一个
集合
,那么您可以在
过滤器
中与
集合进行比较。has()

var坐标=[[45.56,45.57],[44.36,44.37],
[[42.26,42.37],[42.46,42.57]],
[[41.56,41.57],[41.36,41.37],[41.26,41.27]] 
];
var anotherArr=[[41.56,41.57],[41.36,41.37],[41.26,41.27],
[[42.26,42.37],[42.46,42.57]]
]; 
让keys=newset(另一个arr.map(JSON.stringify))
让filtered=coordinarr.filter(arr=>!keys.has(JSON.stringify(arr)))

log(过滤)
Javascript通过引用进行数组比较,因此您无法简单地测试一个组中的数组是否在另一个组中,除非它们是相同的对象。您需要测试每个值,或者将数组转换为按值进行比较的字符串。对于数组,可以使用
JSON.stringify
。如果您用另一个数组创建了一个
集合
,那么您可以在
过滤器
中与
集合进行比较。has()

var坐标=[[45.56,45.57],[44.36,44.37],
[[42.26,42.37],[42.46,42.57]],
[[41.56,41.57],[41.36,41.37],[41.26,41.27]] 
];
var anotherArr=[[41.56,41.57],[41.36,41.37],[41.26,41.27],
[[42.26,42.37],[42.46,42.57]]
]; 
让keys=newset(另一个arr.map(JSON.stringify))
让filtered=coordinarr.filter(arr=>!keys.has(JSON.stringify(arr)))

console.log(过滤)
发布的问题似乎根本不包括解决问题的方法。StackOverflow希望您能这样做,因为您的尝试有助于我们更好地了解您的需求。请编辑问题以显示您已尝试的内容,以便说明您遇到的具体障碍。有关更多信息,请参阅并使用。发布的问题似乎根本不包含解决问题的方法。StackOverflow希望您能这样做,因为您的尝试有助于我们更好地了解您的需求。请编辑问题以显示您已尝试的内容,以便说明您遇到的具体障碍。有关更多信息,请参阅并获取。这不会过滤任何内容,因为
包括通过严格比较进行的测试。我怎么能不使用strict comparison@MarkMeyer?(我对“严格”JS有点陌生)它不是严格的JS。只是当你比较两个数组时,它们永远不会相等,除非它们是相同的对象(而不仅仅是相同的值)哦,对了。我现在明白了。那么,我应该将数组转换为更容易比较的字符串吗?是的,这是一种方法。这不会过滤任何内容,因为
包括通过严格比较进行的
测试。我怎么能不使用严格比较@MarkMeyer呢?(我对“严格”JS有点陌生)它不是严格的JS。只是当你比较两个数组时,它们永远不会相等,除非它们是相同的对象(而不仅仅是相同的值)哦,对了。我现在明白了。那么我应该把数组转换成字符串,比较起来更容易吗?是的,这是一种方法。