Javascript对象数组解析问题

时间:2016-07-26 06:49:39

标签: javascript arrays parsing unique

我在Javascript中有以下对象:

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

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

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

我想解析它并查找此数组中是否只存在两个值。

示例:“text-success”或“muted”如果EXIST ONCE返回数组

如果EXIST两次返回null

如果TRUE返回相应的id

在上面的例子中:

第一个数组:为TRUE

Array[11]
0:"532"
1:"muted"
2:"35"

第二个是假的,因为它存在两次

第3名:也是正确的

Array[11]
0:"534"
1:"text-success"
2:"38"

过去几天我一直在努力尝试

我有以下JQUERY:但它只获取Unique值但丢弃其他值:

我还需要第一个id和相应的id:

Array[11]
0:"534" -> main id (needed)
1:"text-success"
2:"38" ->  company id (needed)



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

结果或所需的输出:

  Array[11]
    0:"532",
    1:"muted",
    2:"35",

第一个值是主要ID, 第二个值是UNIQUE和 第3个值是唯一值的相应ID。

1 个答案:

答案 0 :(得分:1)

你可以解决:

  
      
  • 将对象转换为数组
  •   
  • 检查重复的元素,然后传递
  •   
  • 独特元素推入新数组
  •   
var obj = {
0:"532",
1:"text-warning",
2:"51",
3:"text-warning",
4:"16",
5:"muted",
6:"35",
7:"text-warning",
8:"38",
9:"text-warning",
10:"106"
};


function restUnique(obj){
 var mix = [];
 var output= [];
 Object.keys(obj).forEach(function(key) {

    mix[key]=obj[key];

 });

 for(var i in mix){
  fb=mix.indexOf(mix[i]);
  fa=mix.lastIndexOf(mix[i]);
  if(fb===fa){output.push(mix[i]);}
 }
return output;
}
// usage example:
restUnique(obj); // output : 532,51,16,muted,35,38,106