Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.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/9/javascript/380.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
Jquery 比较数组中的对象_Jquery_Javascript - Fatal编程技术网

Jquery 比较数组中的对象

Jquery 比较数组中的对象,jquery,javascript,Jquery,Javascript,我有一个对象数组 var array = [obj1, obj2, obj3, objN] 每个对象都有3个属性:键、名称、描述 如何比较这些对象是否相等?如果两个对象具有相同的键,则它们相等 但是,如果一个对象有4个,那么它们都必须具有相同的键才能相等。您可以使用以下方法来实现这一点: every()方法测试数组中的所有元素是否通过了所提供函数实现的测试 例如: var array = [obj1, obj2, obj3, objN]; var allTheSame = array.ever

我有一个对象数组

var array = [obj1, obj2, obj3, objN]
每个对象都有3个属性:键、名称、描述

如何比较这些对象是否相等?如果两个对象具有相同的键,则它们相等

但是,如果一个对象有4个,那么它们都必须具有相同的键才能相等。

您可以使用以下方法来实现这一点:

every()
方法测试数组中的所有元素是否通过了所提供函数实现的测试

例如:

var array = [obj1, obj2, obj3, objN];
var allTheSame = array.every(function(element){
    return element.key === array[0].key;
});
请注意,这是IE9+。然而,对于旧版本的IE有一个很好的解决方案

如果您真的想使用for循环,可以这样做:

var array = [obj1, obj2, obj3, objN];
var allTheSame = array.length == 1;

for(var i = 1; i < array.length && (array.length > 1 && allTheSame); i++){
    allTheSame = array[0].key == array[i].key;
}
您可以使用以下方法完成此操作:

every()
方法测试数组中的所有元素是否通过了所提供函数实现的测试

例如:

var array = [obj1, obj2, obj3, objN];
var allTheSame = array.every(function(element){
    return element.key === array[0].key;
});
请注意,这是IE9+。然而,对于旧版本的IE有一个很好的解决方案

如果您真的想使用for循环,可以这样做:

var array = [obj1, obj2, obj3, objN];
var allTheSame = array.length == 1;

for(var i = 1; i < array.length && (array.length > 1 && allTheSame); i++){
    allTheSame = array[0].key == array[i].key;
}
var数组=[obj1、obj2、obj3、objN];
对于(i=0,i
var数组=[obj1、obj2、obj3、objN];
对于(i=0,i
我想拿第一个对象和其他对象进行比较,但感觉不对。似乎你对这个概念有很好的理解,那么问题是什么?只需为您概述的过程编写代码……实际上,将所有对象与第一个对象进行比较是一种方法。我本以为使用第一个对象并与其他对象进行比较,但感觉不太对。似乎您很好地掌握了这个概念,那么问题是什么?只需为您概述的流程编写代码……实际上,将所有对象与第一个对象进行比较是一种方法。为什么要为循环嵌套
?o。O@Cerbrus这样我就可以比较选择索引和数组中的其他对象。这样,我就不必每次转到下一个索引时都返回到第一个索引。它起作用了。复制代码并签入控制台。您只需在阵列中传递实际对象,这是大量冗余检查。如果将第一个对象与数组中的所有其他对象进行比较,并且它们都与第一个对象相同,那么为什么需要再次对第二个对象执行相同的检查?@Cerbrus我正在避免第二个for循环提到的问题,这样我就不必进行两次比较。试一下就行了,没问题。如果数组中的所有元素都必须相同,则只需在数组上迭代一次,即可将所有对象与第一个对象进行比较。为什么要为
循环嵌套
?o。O@Cerbrus这样我就可以比较选择索引和数组中的其他对象。这样,我就不必每次转到下一个索引时都返回到第一个索引。它起作用了。复制代码并签入控制台。您只需在阵列中传递实际对象,这是大量冗余检查。如果将第一个对象与数组中的所有其他对象进行比较,并且它们都与第一个对象相同,那么为什么需要再次对第二个对象执行相同的检查?@Cerbrus我正在避免第二个for循环提到的问题,这样我就不必进行两次比较。试一下就行了,没问题。如果数组中的所有元素都必须相同,则只需在数组中迭代一次,即可将所有对象与第一个对象进行比较。非常感谢,@john:-)“但如果a假设有4个对象,则它们必须具有相同的键才能相等。”我想问题很清楚,@Zeshan。非常感谢,@john:-)“但是如果一个物体有4个,那么它们必须有相同的键才能相等。”我认为问题很清楚,@Zeshan。