为什么有人更喜欢lodash.js或underscore.js实用程序库而不是另一个?
Lodash似乎是下划线的替代品,后者已经存在了更长时间.
我认为两者都很精彩,但我对他们如何努力进行有根据的比较并不了解,我想更多地了解这些差异.
我想比较两个阵列......理想情况下,有效率.没有什么花哨的,只要true它们是相同的,false如果不相同的话.毫不奇怪,比较运算符似乎不起作用.
var a1 = [1,2,3];
var a2 = [1,2,3];
console.log(a1==a2); // Returns false
console.log(JSON.stringify(a1)==JSON.stringify(a2)); // Returns true
Run Code Online (Sandbox Code Playgroud)
每个数组的JSON编码都有,但有没有更快或更"简单"的方法来简单地比较数组而不必迭代每个值?
严格的相等运算符将告诉您两个对象类型是否相等.但是,有没有办法判断两个对象是否相等,就像 Java中的哈希码值一样?
Stack Overflow问题JavaScript中是否有任何类型的hashCode函数?类似于这个问题,但需要更多的学术答案.上面的场景说明了为什么需要有一个,我想知道是否有任何等效的解决方案.
我正在研究Blob,我注意到当你有一个ArrayBuffer时,你可以很容易地将它转换为Blob,如下所示:
var dataView = new DataView(arrayBuffer);
var blob = new Blob([dataView], { type: mimeString });
Run Code Online (Sandbox Code Playgroud)
我现在的问题是,是否可以从Blob转到ArrayBuffer?
我有这两个数组:一个填充来自ajax请求的信息,另一个存储用户点击的按钮.我使用这段代码(我填写了样本号):
var array1 = [2, 4];
var array2 = [4, 2]; //It cames from the user button clicks, so it might be disordered.
array1.sort(); //Sorts both Ajax and user info.
array2.sort();
if (array1==array2) {
doSomething();
}else{
doAnotherThing();
}
Run Code Online (Sandbox Code Playgroud)
但它始终给出false,即使两个数组相同,但名称不同.(我在Chrome的JS控制台中查看了这个).那么,有什么方法可以知道这两个数组是否包含相同的数据?它为什么要给予false?我如何知道第一个数组中的哪些值不在第二个数组中?
我想检查两个数组是否相同(不是内容明确,但按照确切的顺序).
例如:
array1 = [1,2,3,4,5]
array2 = [1,2,3,4,5]
array3 = [3,5,1,2,4]
Run Code Online (Sandbox Code Playgroud)
阵列1和2相同但3不相同.
有没有一种很好的方法在JavaScript中执行此操作?
我一直在阅读Douglas Crockford的JavaScript:The Good Parts,我遇到了一个对我来说没有意义的奇怪例子:
'' == '0' // false
0 == '' // true
0 == '0' // true
false == undefined // false
false == null // false
null == undefined // true
Run Code Online (Sandbox Code Playgroud)
作者还提到"从不使用==和!=.而是始终使用===和!==".但是,他没有解释为什么表现出上述行为?所以我的问题是,为什么上面的结果是这样的?JavaScript中不考虑传递性吗?
我开始时:
"1:2".split(':') == ["1","2"];
// false
Run Code Online (Sandbox Code Playgroud)
然后尝试:
[1,2] == [1,2];
// false
Run Code Online (Sandbox Code Playgroud)
最终:
[] == [];
// false
Run Code Online (Sandbox Code Playgroud)
我发现了:
"1:2".split(':').toString() == [1,2].toString();
// true
Run Code Online (Sandbox Code Playgroud)
所以我已经解决了我的初始问题(种类),但为什么数组不能相互匹配?
提供这种逻辑的最好(最干净)方法是什么?
var colors = ["red","white","blue"];
logic(colors,["red","green"]); //false
logic(colors,["red"]); //true
logic(colors,["red","purple"]); //false
logic(colors,["red","white"]); //true
logic(colors,["red","white","blue"]); //true
logic(colors,["red","white","blue","green"]); //false
logic(colors,["orange"]); //false
Run Code Online (Sandbox Code Playgroud)
可能使用underscore.js?
JavaScript中有两个数组,它们都采用以下格式:
[{'drink':['alcohol', 'soft', 'hot']}, {'fruit':['apple', 'pear']}];
Run Code Online (Sandbox Code Playgroud)
我需要检测两个数组是否相等.如果它们以不同的顺序包含相同的元素,则它们被认为是相等的.我该怎么做?
javascript ×10
arrays ×4
arraybuffer ×1
blob ×1
compare ×1
comparison ×1
equality ×1
equals ×1
equivalence ×1
hashcode ×1
json ×1
lodash ×1
object ×1
string ×1
transitivity ×1