javascript - 使用 JavaScript 解析 JSON 数组并返回所选部分

标签 javascript arrays json string parsing

我有一个非常简单的 json 数组片段和一个现在返回单个参数的 JavaScript 函数:

<!DOCTYPE html>
<html>
<body>

<h2>JSON Array Test</h2>

<p id="outputid"></p>

<script>
var arrayinput = '{"collection":[' +
'{"firstAttr":"XXXA","secAttr":"13156161","lastAttr":"01" },' +
'{"firstAttr":"XXXB","secAttr":"11153325","lastAttr":"02"  },' +
'{"firstAttr":"XXXC","secAttr":"14431513","lastAttr":"03"  },' +
'{"firstAttr":"XXXC","secAttr":"161714","lastAttr":"01"  },' +
'{"firstAttr":"XXXC","secAttr":"151415","lastAttr":"02"  },' +
'{"firstAttr":"XXXC","secAttr":"114516","lastAttr":"02"  },' +
'{"firstAttr":"XXXC","secAttr":"131417","lastAttr":"03"  },' +
'{"firstAttr":"XXXC","secAttr":"1311865","lastAttr":"03"  },' +
'{"firstAttr":"XXXC","secAttr":"1314153","lastAttr":"01"  },' +
'{"firstAttr":"XXXC","secAttr":"13312163","lastAttr":"01"  }]}';

obj = JSON.parse(arrayinput);
document.getElementById("outputid").innerHTML =
obj.collection[1].firstAttr + " " + obj.collection[1].secAttr;
</script>

</body>
</html>

现在的问题是我不想只返回一个值而是多个值。例如,应返回所有带有 lastAttr=01 的条目。

因此我需要以下内容:

for(var i in obj) {                    
    if(lastAttr[i]="01") {
        document.getElementById("outputid").innerHTML =
        obj.collection[i].firstAttr + " " + obj.collection[i].secAttr;
    } else {

    }
}

关于如何实现这项工作有什么想法吗?

最佳答案

如果您想执行where,您需要使用Array.prototype.filter :

var filteredArr = arr.collection.filter(function(item) {
   return item.lastAttr == "01";
});

最后,您可以使用 Array.prototype.forEach迭代结果并执行某些操作:

var outputElement = document.getElementById("outputid");
filteredArr.forEach(function(item) {
    // Check that I used insertAdyacentHtml to be sure that all items
    // will be in the UI!
  outputElement.insertAdjacentHTML("afterbegin", item.firstAttr + " " + item.secAttr);
});

而且,你可以流利做到这一点:

var arr = {
  collection: [{
    firstAttr: "hello",
    secAttr: "world",
    lastAttr: "01"
  }, {
    firstAttr: "hello 2",
    secAttr: "world 2",
    lastAttr: "01"
  }]
};

var outputElement = document.getElementById("outputid");
var filteredArr = arr.collection.filter(function(item) {
  return item.lastAttr == "01";
}).forEach(function(item) {
  outputElement.insertAdjacentHTML("afterbegin", item.firstAttr + " " + item.secAttr);
});
<div id="outputid"></div>

关于javascript - 使用 JavaScript 解析 JSON 数组并返回所选部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31677920/

相关文章:

javascript - 关于一段事件循环代码的随机结果

javascript - TypeScript 导入与 ES6 对象解构

java - 在循环、Java 和 Android 中使用方法

json - 将 JSON 行序列 (JSONL) 转换为 JSON 数组

javascript - 在两个相等的 JSON 对象中,在一种情况下访问 javascript 中的值有效,另一种情况则返回未定义

java - 如何覆盖包含 JSONArray 的 JSONObject 中的值?

javascript - 在 WebKit 中测量回流和绘制时间

javascript - 通过引用函数传递对象,意外行为

java - 如何从字符串数组中删除一个元素?

c# - 如何从列表中的列表中获取区别并删除该(主)列表项?