JavaScript 解析数组并获取唯一值

JavaScript Parsing array and getting the unique value

本文关键字:获取 唯一 数组 JavaScript      更新时间:2023-09-26

我有以下数组:

    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,因为它存在一次"文本成功">

第三个将返回 FALSE,因为两者都存在"文本成功"和"静音">

第 4 个将返回 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"]));

这将循环遍历输入array。第一次找到"text-success""muted"时,其索引存储在foundIndex 中。

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

如果我们到达循环的尽头,那么我们知道我们要么找到"text-success",要么"muted"一次,要么根本没有。如果找到它,我们返回一个包含三个元素的数组,包括输入数组中的第一个项目,"text-success""muted"的值,然后是紧跟在数组中该文本后面的项目。

(注意:在数组 1 的示例输出中,您返回了匹配文本

之后的值,但在数组 4 的示例输出中,您返回了匹配文本之前的值。我不知道你真正想要哪一个,但你可以很容易地修改我的函数来做一个或另一个。

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

如果你想

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

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

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

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

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