如何忽略/跳过嵌套JSON JavaScript中未定义的内容

时间:2019-06-13 13:14:57

标签: javascript json undefined wildcard

我正在尝试从事物(1-10个对象)和东西(1-10个对象)中返回所有 it (字符串) )。我注意到我无法使用通配符来完成此操作,但是我想知道是否还有另一种方法可以做到这一点?

我想返回一个包含所有 it 的数组。

response.things [0] .stuff [0]。它将从我的第一个对象返回的字符串是事物 stuff 中的每一个,但是

$.get("https://page.json", function(response) {
  var substr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
  var arrayIts = [];
  $.each(substr , function(index, val) { 
    var arrayIts = response[index];
    console.log(arrayIts.things[index].stuff[val].it);
  });
});

以上将返回所有 it ,直到返回undefined然后停止。

如何返回所有,并且可能忽略/跳过未定义的内容?

到目前为止,我的解决方案如下所示。

$.getJSON('https://jsonplaceholder.typicode.com/posts', function(data) {
  	var arrayData = [];
		try {arrayData.push("<li>"+data[0].id+"</li>");}catch(e){}
		try {arrayData.push("<li>"+data[1].id+"</li>");}catch(e){}
    try {arrayData.push("<li>"+data[2].id+"</li>");}catch(e){}
 		try {arrayData.push("<li>"+data[100].id+"</li>");}catch(e){arrayData.push("<li>skipped</li>")}
    try {arrayData.push("<li>"+data[3].id+"</li>");}catch(e){}
    try {arrayData.push("<li>"+data[99].id+"</li>");}catch(e){}
		document.getElementById('listId').innerHTML = arrayData.join("");
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul id="listId">empty</ul>

1 个答案:

答案 0 :(得分:0)

只需使用if。

如果(response [index])arrayIts.push(response [index]);

如果定义了response [index]),则为true。否则是错误的。