JavaScript 解析数组并获取唯一值

标签 javascript jquery arrays

我有以下数组:

    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,因为两者都存在“文本成功”两次和“静音”一次

第二个将返回 TRUE,因为它存在一次“text-success”

第三个将返回 FALSE,因为两者都存在“text-success”和“muted”

第四个将返回 TRUE,因为它存在一次“静音”

我需要解析数组并获取结果:

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"

到目前为止我有这个:

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;
};

请帮助任何人吗?

最佳答案

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

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"]));

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

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

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

(注意:在数组 1 的示例输出中,您返回了匹配文本之后的值,但在数组 4 的示例输出中,您返回了匹配文本之前的值匹配的文本。我不知道您真正想要哪一个,但您可以轻松修改我的函数来执行其中之一。)

如果数组中不存在 "text-success""muted" ,您没有说明要返回什么,所以我只是返回一个占位符字符串。

关于JavaScript 解析数组并获取唯一值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38567697/

相关文章:

javascript - FUNCTIONS 的继承正在成为一场噩梦

javascript - 根据高度和宽度调整 div 的大小

javascript - 折叠具有初始状态的面板

c++ - 类的属性可以是数组吗?

javascript - 如何使用 d3.time.scale() 生成一组均匀间隔的日期?

javascript - 修改多数组中的所有数组

javascript - 纯js数组在元素交替的地方合并

jquery - 应用 -webkit-transform 时 Div 元素闪烁(仅转换后的元素)

javascript - 如何将base64字符串转换为图像并将其保存在文件夹中

javascript - jQuery 轮函数