2015-05-30 23 views
1

我在JavaScript中有此JSON從阿賈克斯服務器responde通的JSON,並採取結果取決於兩行 - 的JavaScript

我需要傳遞,並得到新的JSON或arrat還是其他什麼東西,將返回我的NUM是的狀態爲 「0」,它2種類型

例如:

id:1 num:1 type:A state:0 
id:2 num:1 type:B state:0 

這是好的NUM !!我需要這個,因爲NUM狀態0是A型的乙

但這不是好

id:1 num:1 type:A state:0 
id:2 num:1 type:B state:1 

所以此JSON我NUM將是:1,3

[ 
    { 
     "id": 1, 
     "num":1, 
     "type":"A", 
     "state": 0 
    }, 
    { 
     "id": 2, 
     "num":1, 
     "type":"B", 
     "state": 0 
    }, 
    { 
     "id": 3, 
     "num":2, 
     "type":"A", 
     "state": 1 
    }, 
    { 
     "id": 4, 
     "num":2, 
     "type":"B", 
     "state": 0 
    }, 
    { 
     "id": 5, 
     "num":3, 
     "type":"A", 
     "state": 0 
    }, 
    { 
     "id": 6, 
     "num":3, 
     "type":"B", 
     "state": 0 
    } 
] 

回答

0
var aa = [ 
     { "id": 1, "num": 1, "type": "A", "state": 0 }, 
     { "id": 2, "num": 1, "type": "B", "state": 0 }, 
     { "id": 3, "num": 2, "type": "A", "state": 1 }, 
     { "id": 4, "num": 2, "type": "B", "state": 0 }, 
     { "id": 5, "num": 3, "type": "A", "state": 0 }, 
     { "id": 6, "num": 3, "type": "B", "state": 0 } 
    ], 
    num = {}, 
    result = [], 
    i; 

aa.forEach(function (a, i) { 
    if (a.state === 0) { 
     num[a.num] = num[a.num] || []; 
     num[a.num].push(i); 
    } 
}); 
for (i in num) { 
    if (num[i].length >= 2) { 
     result.push(i); 
    } 
} 
+0

它返回「2」,但我需要num:1,3,也在控制檯它是返回對象{undefined:Array [0]} – fstdv

+0

結果是'結果'。 –