2017-09-14 70 views
2
var data = { 
    "obj":[{ 
    "name": "John", 
    "age": "10", 
    "Alias": "Person", 
    "where":[{"City1":"foo", "City2":"foo2"}] 
    },{ 
    "name": "Mike", 
    "age": "", 
    "Alias": "Person", 
    "where":[{"City1":"test1", "City2":"test2"}] 
    }] 
} 

data.obj[0].Aliasdata.obj[1].Alias是重複的。在JQuery中,如何檢查Json對象中的空值和重複值?

另外data.obj[1].age爲空。

如果JSON對象中存在空值或重複值,則返回false。

如何檢查空值和重複值?

+0

https://stackoverflow.com/questions/30735465/how-can-i-check-if-the-array-of -objects-have-duplicate-property-values - 這篇文章可能會幫助你:) –

回答

1

您可以使用過濾器

  1. 它首先會檢查空的年齡。
  2. 如果有空的話,會發出虛假警報。如果發送虛假警報,該項目將不在final中。
  3. 否則它會嘗試檢查重複Alias。如果臨時列表中存在任何項目,這意味着它已經通過一次。它將返回false
  4. 如果臨時列表中不存在任何項目,它將在temp中推送該項目並返回true
  5. 如果final中的總項不等於data這意味着json中存在無效項。

像這樣

var data = { 
    "obj": [{ 
    "name": "John", 
    "age": "10", 
    "Alias": "Person", 
    "where": [{ 
     "City1": "foo", 
     "City2": "foo2" 
    }] 
    }, { 
    "name": "Mike", 
    "age": "", 
    "Alias": "Person", 
    "where": [{ 
     "City1": "test1", 
     "City2": "test2" 
    }] 
    }] 
} 

var temp = [] 
var final = data.obj.filter((x, y) => { 
    console.log(x) 
    if (x.age.length == 0) { 
    return false 
    } else { 
    if (temp.indexOf(x.Alias) > -1){ 
     return false 
    } 
    else { 
     temp.push(x.Alias) 
     return true 
    } 
    } 
}) 

console.log(final.length == data.obj.length ? "Valid" : "Not valid JSON") 

DEMO

+0

我更新data.obj [1] .age:「11」和data.obj [1] .Alias:「Person2」。 但它仍然返回「無效Json」... – Yunhee

+0

我已經更新了代碼。請檢查@ Yunhee –