【问题标题】:Comparing Array with multidimensional array [closed]将数组与多维数组进行比较 [关闭]
【发布时间】:2013-09-25 02:12:09
【问题描述】:

我有 2 个数组:

labels = ["water", "sever", "electricity"];
services = [0:[0:"1",1:"sever"], 1:[0:"3",1:"park"], 3:[0:"4",1:"gas"]];

我想检查 labelsANY 值是否在 services 中(True 或 False)。

使用 jquery 存档的最佳方法是什么?

编辑 1:

是的,我在提问时犯了一个错误,services 是一个 JSON 对象。

更新

Bregi 的第二个解决方案正是我所需要的。 .some 正在实现目的。

var isInAny = labels.some(function(label) {
  return services.some(function(s) {
    return s[1] == label;
  });
});

【问题讨论】:

  • 这不是有效的 JavaScript 语法
  • jQuery 在这里没有帮助。查看 Underscore.js 库。
  • 服务在我看来就像一个对象。

标签: jquery arrays multidimensional-array array-difference


【解决方案1】:

使用some Array method(尽管您可能需要为旧环境填充它):

var isInAny = labels.some(function(label) {
    // since we don't know whether your services object is an actual array
    // (your syntax is invalid) we need to choose iteration/enumeration
    if (typeof services.length == "number") {
        for (var i=0; i<services.length; i++)
            if (services[i][1] == label)
                return true;
    } else {
        for (var p in services)
            if (services[p][1] == label)
                return true;
    }
    return false;
});

如果services 真的是一个数组,你也可以使用

var isInAny = labels.some(function(label) {
    return services.some(function(s) {
        return s[1] == label;
    });
});

【讨论】:

  • services 是一个数组,您的第二个解决方案完美运行..
【解决方案2】:

假设这些应该是大括号而不是services中的括号

labels.some(function (label) {
    for (var x in services) {
        if (services.hasOwnProperty(x)) {
            return services[x][1] === label;
        }
    }
});

http://jsfiddle.net/WwsLk/

【讨论】:

  • services 是从数据库创建的 JSON。我不知道你为什么说服务中的括号而不是括号。如果您能提供更多有关它的信息,将会很有帮助。是的,.some 完全可以按照我的需要工作,但是您的代码做了一些更改(@Bergi 的解决方案在我的情况下给出了正确的结果)。
  • @anand 括号:[,大括号:{。有什么变化?
  • 我只使用带括号的上述代码 ([)。
  • @an我现在明白了。您问题中的services 不是有效的JS;只要确保它对你的下一个问题有效:)
【解决方案3】:

这里经常回答这个问题。你可能想看看^^

但是,给你一个答案:在服务上使用 $.each 来生成一个包含字符串的新数组,并将其与标签数组进行比较。

这应该会让你有个想法: Compare two multidimensional arrays in javascript

【讨论】:

  • 该问题的标题相同,但主题却截然不同。
  • -1 用于评论而不阅读完整问题。
猜你喜欢
  • 1970-01-01
  • 2018-06-28
  • 2015-08-12
  • 1970-01-01
  • 1970-01-01
  • 2015-07-15
  • 1970-01-01
  • 2012-04-13
  • 2015-06-03
相关资源
最近更新 更多