相关疑难解决方法(0)

如何在javascript中检查数组是否相等?

看看这个代码示例或转到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中有效地比较数组?

javascript arrays comparison

9
推荐指数
4
解决办法
2万
查看次数

为什么或如何证明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中使用少于和多于方法?

javascript arrays equality

8
推荐指数
2
解决办法
696
查看次数

Immutable.Set.contains返回false

我想创建一组不可变的路径.在我的例子中,路径只是一个字符串数组.所以我们说我们有以下路径.

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"])而不是简单数组来解决这个问题

javascript immutable.js

5
推荐指数
1
解决办法
597
查看次数

如何在Jquery中检查数组包含不同的值或相同的值

一个数组可以包含多个值。我想检查所有值是否相同或不同。

例子

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 jquery

5
推荐指数
1
解决办法
4235
查看次数

为什么这段代码不能用于anagram检查?

我正在尝试在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)

javascript arrays sorting split anagram

3
推荐指数
1
解决办法
75
查看次数

lodash 的 .sortedUniq() 似乎没有删除重复项。它是如何工作的?

给定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%准确。

高度赞赏彻底的解释。

javascript lodash

3
推荐指数
1
解决办法
4219
查看次数

列表列表的Array.indexOf不起作用

我有一个来自服务器的列表列表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获得地位.

  • 可能是什么原因?
  • 为什么indexOf无法计算其索引?
  • 有什么方法可以找到它,只通过循环遍历列表来获取索引?

创建了一个jsFiddle

注意 - 实际上它应该是一个json,但我们团队中的某个人已将其写为列表列表.我现在无法更新它,因为代码正在生产中.

javascript indexof

2
推荐指数
1
解决办法
320
查看次数