![]() |
1
5
要比较数组,请遍历数组并比较每个值: 比较数组:
用法:
但是比较字符串要快得多-没有循环。。。 “好吧,那么你应该注意到有循环。第一个递归循环将数组转换为字符串,第二个循环比较两个字符串。这种方法 比使用字符串快 .
比较对象:我在上面已经说过,那两个物体 永远不会相等,即使它们包含相同的数据:
这是有原因的,例如 private variables within objects. 但是,如果只使用对象结构来包含数据,则仍然可以进行比较:
this answer and it's superlong function
.
我做了一个 little test tool for both of the functions .
|
![]() |
2
5
虽然这只适用于标量数组(请参见下面的注释),但它很短:
(注意:这里的“标量”是指可以使用
根据我从评论中读到的,对数组进行排序和比较可能会得到准确的结果:
如:
那么上面的代码会给出
|
![]() |
3
5
|
![]() |
4
3
这将转换对象
|
![]() |
5
3
我认为,如果一个特定的实现仅仅是“正确的”(“正确的”)而不是“错误的”解决方案,那么说它是“正确的”是错误的。Tom的解决方案明显优于基于字符串的数组比较,但这并不意味着它在客观上是“正确的”。是什么 正确的 汤姆可以说他的解决方案很快,但我也认为这是不必要的复杂。它试图成为一个适用于所有数组(无论是否嵌套)的一体式解决方案。事实上,它甚至不仅仅接受数组作为输入,而且仍然试图给出一个“有效”的答案。 泛型提供了可重用性
在我看来,最好的代码甚至不需要注释,这也不例外。这里发生的事情太少了,你几乎可以毫不费力地理解这个过程的行为。当然,有些ES6语法现在对您来说可能是陌生的,但这只是因为ES6相对较新。
接下来,使用我们的
就这么简单。
注意,我们还定义了
松散的比较
我们也可以很容易地定义
你可能已经注意到这只是一个肤浅的比较。当然,汤姆的解决方案是“正确的方法”,因为它隐含着深层次的比较,对吧?
我们的
就这么简单。我们用
另一个
高阶函数。这次我们要包装了
因为
明确地 根据需要,为我的数组选择浅或深比较。
现在如果你有一个对象数组或其他什么呢?如果每个对象都具有相同的数组,那么您可能会认为这些数组是“相等的”
任何 对象类型;甚至是自定义对象。为了支持这种平等测试,Tom的解决方案需要完全重写
任意比较(示例)
少即是多
你可以看到我们用更少的代码做的更多。没什么复杂的
全部使用一个程序
它是最快的吗?不。但可能也不需要。如果速度是衡量代码质量的唯一标准,那么很多真正优秀的代码都会被丢弃——这就是为什么我要调用这种方法 . 或者更公平地说, A 实用的方法。这个描述适合这个答案,因为我并不是说这个答案只在与其他答案比较时才实用;它是客观真实的。我们已经达到了高度的实用性,只需要很少的代码,很容易推理。没有其他代码可以说我们没有获得这个描述。 你认为这是“正确”的解决方案吗?就这样吧 你 编辑
我以前的回答更侧重于分解
|
![]() |
6
3
本着最初问题的精神:
results (快到慢):
every (69%) 用户2782196
reduce 德伊斯
join &安培; toString (78%) 作者:Gaizka Allende&vivek
half toString (90%) 作者:Victor Palomo
|
![]() |
7
3
不清楚你说的“完全相同”是什么意思。例如,数组
这里有一个优化的数组比较函数,它使用严格的相等来比较每个数组的对应元素,并且不对本身是数组的数组元素进行递归比较,这意味着对于上述示例,
|
![]() |
8
2
根据tomzato的回答,我同意只迭代数组是最快的。另外(就像其他人已经说过的那样),函数应该被称为equals/equal,而不是compare。有鉴于此,我修改了这个函数来处理数组的相似性比较(即它们有相同的元素,但顺序不对)以供个人使用,并认为我应该把它放在这里供大家查看。
例子:
我还编写了一个快速的jsfiddle函数和这个示例:
|
![]() |
Halufolia · Lodash keyBy与数组具有相同的属性 7 年前 |
![]() |
maxd · 删除以参数开头的对象的属性 7 年前 |
![]() |
leonheess · lodash不作为内部功能使用 7 年前 |
![]() |
Sam Denty zneak · 按键对对象数组分组 7 年前 |
![]() |
jsh6303 · “pickBy”对象的值数组中的值 7 年前 |
![]() |
imanu · 对嵌套json复杂数组排序 7 年前 |
|
Hozoa glee · 节点。JS使用lodash将子对象添加到对象 7 年前 |
![]() |
Huy Vo · 为什么需要使用lodash/fp/constant? 7 年前 |