看看这个代码示例或转到jsfiddle
function printRelation(a, b, out) {
var text;
if (a === b) {
text = "a === b";
} else if (a == b) {
text = "a == b";
} else {
text = "a != b";
}
$('#' + out).text(text);
}
var a = [0, 0, 2], b = a;
printRelation(a, b, 'out1');
a = [0, 0, 2];
b = [0, 0, 2];
printRelation(a, b, 'out2');
Run Code Online (Sandbox Code Playgroud)
我本来期望两个测试都输出a === b,但只有第一个输出.第二个输出a != b.谁能解释这种行为?如何在javascript中有效地比较数组?
在这个答案中,有一个简单的函数将返回包含原始值的数组的数组相等性.
但是,我不确定它为什么会起作用.这是功能:
function arrays_equal(a,b) { return !!a && !!b && !(a<b || b<a); }
Run Code Online (Sandbox Code Playgroud)
我对下半场最感兴趣; 这一点:
!(a<b || b<a)
Run Code Online (Sandbox Code Playgroud)
为什么<和>比较数组时工作,但==不?
如何在JavaScript中使用少于和多于方法?
我想创建一组不可变的路径.在我的例子中,路径只是一个字符串数组.所以我们说我们有以下路径.
var paths = [["a"], ["a", "b", "c"]];
Run Code Online (Sandbox Code Playgroud)
然后我创建这样的Immutable Set
var selectedPaths = Immutable.Set(paths);
Run Code Online (Sandbox Code Playgroud)
虽然selectedPaths.first()回归["a"],但我无法理解为什么要selectedPaths.contains(["a"])回报false.
编辑:嗯,我得到了一个答案,为什么会发生这种情况,但我仍然无法让它工作,因为我需要它.
解决方案:正如@Alnitak所述,我通过比较路径Immutable.List(["a"])而不是简单数组来解决这个问题
一个数组可以包含多个值。我想检查所有值是否相同或不同。
例子
var a = [2, 4, 7, 2, 8]; // all values are not same
var b = [2, 2, 2, 2, 2]; // all values are same
Run Code Online (Sandbox Code Playgroud)
我如何在 jquery 中检查它
我正在尝试在javascript中进行anagram检查.为简单起见,假设下面的函数只采用小写字符串而没有任何间距/数字/符号.为什么下面的代码不起作用?
var anagram = function(string1, string2) {
var string1array = string1.split('').sort();
var string2array = string2.split('').sort();
if (string1array == string2array) {
console.log("they're anagrams");
}
else {
console.log("they are not anagrams");
}
}
Run Code Online (Sandbox Code Playgroud) 给定someArr,(时间戳数组php,稍后将转换为javascript时间戳(*=1000)),我期待lodash...
_.sortedUniq(someArr)
Run Code Online (Sandbox Code Playgroud)
删除所有重复值,给出与以下相同的结果
Array.from(new Set(someArr))
Run Code Online (Sandbox Code Playgroud)
谁能解释一下为什么.sortedUniq()不删除重复项?_.uniq()为此,我也尝试过。我的假设是错误的吗?我的数据集有问题吗?
这是mcve.
问题本身是指在我定义之后allVals,但我保留了构建它的方式,以防万一我的做法出现问题。初始数据集数组是来自的php,并且暂时在结构方面是不可协商的。
请注意,虽然我确实在 中进行了一些练习javascript,但我不是一个“受过教育的”程序员,我来自设计背景并学会了动手编写代码,所以我不排除我对某些编程模式不100%准确。
高度赞赏彻底的解释。
我有一个来自服务器的列表列表ajax response具有以下结构:
var mapping = [ //response.mapping
["userOne", 1],
["userTwo", 2],
["userthree", 3],
["userfour", 4],
["personOne", 1],
["personTwo", 2],
["personOne", 3],
];
Run Code Online (Sandbox Code Playgroud)
由于列表将永远不变,因此任何时候都只有7个元素.我想要任何元素的索引来更新一些DOM元素.
// Gives me any of list element which is random elm of the list `mapping`.
var captured_list_elm = process_mapping_list();
var status = mapping.indexOf(captured_list_elm);// getting always -1
Run Code Online (Sandbox Code Playgroud)
在这里,我总是-1获得地位.
创建了一个jsFiddle
注意 - 实际上它应该是一个json,但我们团队中的某个人已将其写为列表列表.我现在无法更新它,因为代码正在生产中.
javascript ×7
arrays ×3
anagram ×1
comparison ×1
equality ×1
immutable.js ×1
indexof ×1
jquery ×1
lodash ×1
sorting ×1
split ×1