首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaScript解析数组和获得唯一值

JavaScript解析数组和获得唯一值
EN

Stack Overflow用户
提问于 2016-07-25 12:23:51
回答 2查看 109关注 0票数 0

我有以下数组:

代码语言:javascript
复制
    array-1:

        Array[11]
        0:"265"
        1:"text-success"
        2:"51"
        3:"text-warning"
        4:"16"
        5:"text-warning"
        6:"35"
        7:"text-warning"
        8:"38"
        9:"text-warning"
        10:"106"

    array-2:
        Array[11]
        0:"265"
        1:"text-success"
        2:"51"
        3:"text-warning"
        4:"16"
        5:"text-warning"
        6:"35"
        7:"text-success"
        8:"38"
        9:"text-warning"
        10:"106"

   array-3:
        Array[11]
        0:"265"
        1:"muted"
        2:"51"
        3:"text-warning"
        4:"16"
        5:"text-warning"
        6:"35"
        7:"text-success"
        8:"38"
        9:"text-warning"
        10:"106"

    array-4:
        Array[11]
        0:"265"
        1:"text-warning"
        2:"51"
        3:"text-warning"
        4:"16"
        5:"muted"
        6:"35"
        7:"text-warning"
        8:"38"
        9:"text-warning"
        10:"106"

第一个将返回FALSE,因为两者都存在“文本成功”-twice和“静音”-once。

第二,因为它曾经存在过一次“文本-成功”,所以它将返回真。

第三,因为两者都存在“文本成功”和“沉默”,所以会返回错误。

第四条将返回真,因为它曾经存在过一次“沉默”。

我需要解析数组并得到结果:

代码语言:javascript
复制
array-1:

    Array[11]
        0:"265"
        1:"text-success"
        2:"51"

array-2: Null

array-3: Null

array-4:

    Array[11]
        0:"265"
        1:"muted"
        2:"16"

到目前为止我有这样的想法:

代码语言:javascript
复制
function singles( array) {
    for( var index = 0, single = []; index < array.length; index++ ) { 
        if(array[index] == "text-success" || array[index] == "muted") {
            single.push(array[index]);
        }
    }
    return single;
};

请帮帮谁?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-07-26 07:43:47

目前还不清楚您是否有一个包含多个数组的对象,或者只是一个标准的一维数组,您已经给出了几个可能的示例,但是假设后者,我认为这就是您要寻找的:

代码语言:javascript
复制
function singles(array) {
  var foundIndex = -1;
      
  for(var index = 0; index < array.length; index++) {
    if(array[index] === "text-success" || array[index] === "muted") {
      if (foundIndex != -1) {
        // we've found two, so...
        return null;
      }
      foundIndex = index;
    }
  }
  if (foundIndex != -1) {
    return [ array[0], array[foundIndex], array[foundIndex+1] ];
  }
  return "Some default value for when it wasn't found at all";
}

console.log(singles(["532","text-warning","51","text-warning","16","muted","35","text-warning","38","text-warning","106"]));
console.log(singles(["533","text-warning","51","text-warning","16","muted","35","text-success","38","text-warning","106"]));

这会循环输入array。第一次发现"text-success""muted"时,它的索引存储在foundIndex中。

如果第二次找到"text-success""muted",我们立即返回null

如果我们到达循环的末尾,那么我们就知道我们找到了"text-success""muted",或者一次或者根本没有找到。如果一旦找到,则返回一个包含三个元素的数组,其中包括输入数组中的第一个项,即"text-success""muted"的值,然后是数组中紧跟该文本的项。

(注意:在来自Array 1的示例输出中,您在匹配的文本之后返回了值,但是在您的示例中,来自Array 4的输出在匹配的文本之前返回了值。我不知道你真正想要哪一个,但你可以很容易地修改我的函数来完成其中一个。)

如果数组中没有"text-success""muted",您没有说要返回什么,所以我刚刚返回了一个位置保持字符串。

票数 1
EN

Stack Overflow用户

发布于 2016-07-25 12:41:07

如果要测试数组中是否存在"text-success""muted",请使用此函数,它将返回一个布尔值:

代码语言:javascript
复制
function singles(array) {
    var single = false;
    for (var i = 0; i < array.length; i++) {
        if (array[i] === "text-success" || array[i] === "muted") {
            if (single) {
                return false;
            }
            single = true;
        }
    }
    return single;
}

如果要返回"text-success""muted"之间的唯一值,请使用以下函数。它将返回唯一值,否则将返回null

代码语言:javascript
复制
function singles(array) {
    var single = null;
    for (var i = 0; i < array.length; i++) {
        if (array[i] === "text-success" || array[i] === "muted") {
            if (single) {
                return null;
            }
            single = array[i];
        }
    }
    return single;
}

如果需要相应值的代码,请使用以下代码:

代码语言:javascript
复制
function singles(array) {
    var single = null;
    for (var i = 1; i < array.length; i += 2) {
        if (array[i] === "text-success" || array[i] === "muted") {
            if (single) {
                return null;
            }
            single = array[i - 1];
        }
    }
    return single;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38567697

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档