2016-07-26 51 views
-1

我在Javascript以下对象: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" 

我想分析它,并发现如果两个数值数组中只出现一次。

示例: “文本成功” 或 “静音”(如果存在)ONCE返回数组

如果EXIST两次返回null

如果TRUE返回相应的ID

在上面的例子:

1个数组:是TRUE

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

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

第三届之一:亦是如此

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

我一直试图在过去的几天里没有成功

我有以下JQUERY:但它只是变得独特的价值,但放弃其他:

我首先需要的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, 所述第二值是唯一的和 所述第三值是唯一的值相应的ID。

+0

哪里是你的jQuery的? – choz

+1

请将对象/数组添加为文本文字。 –

+0

@choz它在那里,请看看 –

回答

0

可以解决:

  • 变换对象数组
  • 检查重复的元素,然后通过
  • 独特元素推到新的数组
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