【问题标题】:Find if Array contains a user查找数组是否包含用户
【发布时间】:2014-11-11 18:57:02
【问题描述】:

我有一个解析后台作业,其中包含一个简单的 query.each 一个类。此类有 2 个 Arrays 字段,其中填充了 objects.ID。在这个查询中,对于每个对象,我需要检查第一个数组的 objects.ID 是否包含在第二个数组中。 基本上在一个简单的循环中:

    var j = 0;
    for (var j = 0; j < firstArray.length; j++) {
        if(firstArray[j] "isContainedIn" secondArray){
        // my custom code
        }
    }

我想不通的是要使用的函数,如果存在的话。javascript是否有这样的函数,或者我需要创建一个嵌套循环来实现我的目标?

编辑:我使用 indexOf 解决了这个问题,但 Shqiptar 提出的解决方案不起作用,所以这里是实际可行的解决方案:

第一个数组名称 = usersEligibleToVote 第二个数组名称 = usersThatVoted

for (var j = 0; j < usersEligibleToVote.length; j++) {
        if(usersThatVoted.indexOf(usersEligibleToVote[j]) === -1){
            console.log("user.id "+usersEligibleToVote[j]+" needs to vote");
        } else {
            console.log("user.id "+usersEligibleToVote[j]+" has voted");
        }
}

【问题讨论】:

  • 嵌套循环,除非指针指向同一个对象...
  • 你可以使用 indexOf 如果它们是完全相同的对象而不是值明智但指向同一个对象的指针
  • 我看到了这个问题,但我的回答是关于云代码的,我不认为其中的每个 javascript 函数都可用..

标签: javascript arrays parse-platform parse-cloud-code


【解决方案1】:
var j = 0;
    for (var j = 0; j < firstArray.length; j++) {
        if(firstArray[j].contains(secondArray))
        {
        // your custom code here
        }
    }

然后检查一个对象是否相同:

var j = 0;
    for (var j = 0; j < firstArray.length; j++) {
        if(firstArray[j].indexOf(secondArray) != -1) 
        {
        // your custom code here
        }
    }

【讨论】:

  • 注意:必须是同一个对象而不是具有相同值的对象。
  • 我想你想要secondArray.contains(firstArray[j])
  • firstArray[j].indexOf(secondArray) 你想在这里做`!= -1`。返回值 0(假)表示它在数组中。你的条件都倒退了。
  • Array.prototype.contains 尚未实现。 -1 和错误的 indexOf 检查。
  • 除了批评我之外,是否愿意在此代码中进行任何编辑?
【解决方案2】:

我会通过一个简单的 jQuery 和 javascript for 循环来处理它,如下所示:

var arr1;
var arr2;
var i;
for(i = 0; i < arr1.length; i++) {
    if ($.inArray(arr1[i], arr2) {
        break; //do things here or what not
        }
}

【讨论】:

  • 你会因为建议 jQuery“做这么简单的事情”而被否决,呵呵。假设一个人目前正在使用它——这是公平的。
  • 没有否决票 :( 从技术上讲,它只有两行 :P 使用 jQuery inArray 对我来说要快得多,我在浏览产品列表和促销活动时使用它来比较几个产品。
  • 是的,唯一的问题是一些用户可能想要捆绑整个 jQuery 只是为了使用这个帮助器,这很愚蠢,因为它不是那个插件的目的。对于 javascript 逻辑操作和东西 -> 签出 lodash 或下划线。
猜你喜欢
  • 1970-01-01
  • 2020-11-13
  • 1970-01-01
  • 2014-07-01
  • 1970-01-01
  • 2012-08-05
  • 2022-01-22
  • 1970-01-01
  • 2019-08-10
相关资源
最近更新 更多