2016-11-27 94 views
-3

我是JavaScript和JSON的新手。我有这样的JSON:从JSON中提取数据返回undefined

data = [[{"checked":false,"no":"1"},{"checked":true,"no":"2"}]] 

但我很难通过循环来获取“检查”值。

我用于循环,然后我尝试console.log data.checked但它总是返回undefined。如何做到这一点?

+0

这不是JSON! – Oriol

+0

因为你检查了数组,请删除一对括号 – stasovlas

回答

1

使用索引获取第一个数组元素并使用Array#forEach方法进行迭代。

var data = [ 
 
    [{ 
 
    "checked": false, 
 
    "no": "1" 
 
    }, { 
 
    "checked": true, 
 
    "no": "2" 
 
    }] 
 
]; 
 

 
data[0].forEach(function(v) { 
 
    console.log(v.checked); 
 
})

+1

谢谢!有用。 – sse

0

你有一个嵌套的数组,所以访问成员对象,你需要在data[0]访问它们的checked财产。

let innerData = data[0]; 
for(let i = 0; i < innerData.length; i++) { 
    console.log(innerData[i].checked); 
} 
0

在你的JSON,你有一个顶层数组,那里面,你有阵列(S)的另一个层面,而数组中你的对象。所以你应该做的是这样的。

for (var i = 0; i < data.length; ++i) { 
    for (var j = 0; j < data[i].length; ++j) { 
    console.log(data[i][j], data[i][j].checked); 
    } 
} 
0

你可以摆脱双重嵌套数组与

array = array[0]; 

然后循环为你总是循环。

0
// This is array in array with object 
var data = [[{"checked":false,"no":"1"},{"checked":true,"no":"2"}]] 


for(var i = 0 ; i < data.length ; i++){ // Test the length of first array and go inside 
    for(var z = 0 ; z < data[i].length ; z++){ // When you are inside the array go to another one array and inside go and search 'chacked' 
     console.log(data[i][z]['checked']); // show value of the checked 
    } 
}