【问题标题】:Comparing string in array比较数组中的字符串
【发布时间】:2017-02-21 07:24:39
【问题描述】:

如果我有这样的数组:

arr = ["hey", "some", "string", "aaa", "ccc"];

我想比较数组中是否有相同的字符串但有这样的特殊规则:

如果 arr[1] == "一些"

arr = ["hey", "bbb", "string", "aaa", "ccc"];    //return true
arr = ["hey", "some", "string", "aaa", "bbb"];   //return true
arr = ["hey", "some", "string", "aaa", "some"];  //return false

我已经知道如何将字符串与这段代码进行比较:

var arr = ["hey", "some", "string", "aaa", "ccc"];
var val = $('#somethingFromTableForm').val();
for(var i = 0; i < arr.length; i++) {
    if (arr[i].indexOf(val) > -1){
        alert("same string");
        return false;
    }
}
return true;

但是如何用这个特殊的规则来比较字符串呢?

【问题讨论】:

  • 你能解释一下这条规则是什么吗?
  • 不确定什么是“特殊规则”?为什么第一个示例评估为true,第二个示例评估为true,第三个示例评估为false
  • 试试这个函数:jQuery.inArray(variable_name,your_array_arr)
  • 是检查数组是否有重复吗?
  • 在这种情况下,您可以简单地使用indexOf 来检查新名称。

标签: javascript jquery arrays string


【解决方案1】:

您可以使用Array#indexOfArray#lastIndexOf 并使用Array#every 检查每个元素是否相等。

function check(array) {
    return array.every(function (a, i, aa) {
        return i === aa.lastIndexOf(a);
    });
}

console.log(check(["hey", "bbb", "string", "aaa", "ccc"]));   // true
console.log(check(["hey", "some", "string", "aaa", "bbb"]));  // true
console.log(check(["hey", "some", "string", "aaa", "some"])); // false

【讨论】:

  • 如果问题是关于检查重复项,我想我们应该将其标记为重复项。 #reference link。由于问题不清楚,我自己还没做完
  • 只是一个指针,你可以做aa.filter(a).length === 1indexOflastIndexOf 都将循环遍历数组
  • @Rajesh,但过滤器没有提前退出。
  • 我的错,我的意思是在 .every( (x,i,a) =&gt; a.filter(x).length === 1 ) 里面。但是您当前的更新解决了它。 :-)
猜你喜欢
  • 2011-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-24
  • 2012-11-03
相关资源
最近更新 更多