基于一个键值访问JSON对象
我有传入json对象。 我想要做的是过滤JSON的关键。 例如,我有三个传入的json对象。
Sending message: {"deviceId":"test","temperature":11,"latitude":50,"longitude":19,"time":1,"id":398} Sending message: {"deviceId":"temp","temperature":11,"latitude":50,"longitude":19,"time":1,"id":399} Sending message: {"deviceId":"temp","temperature":11,"latitude":50,"longitude":19,"time":1,"id":400} Sending message: {"deviceId":"test","temperature":11,"latitude":50,"longitude":19,"time":1,"id":01} Sending message: {"deviceId":"temp","temperature":11,"latitude":50,"longitude":19,"time":1,"id":402}
我只想要deviceid被testing的那些json对象,而不是temp。 我正在尝试过滤JSON。 我怎样才能做到这一点?
我会给你写个例子
说你有名单
let obj = { "deviceId":"test", "temperature":11, "latitude":50, "longitude":19, "time":1, "id":398 }
然后你可以通过obj['deviceId']
selectdeviceId
for (let index in listOfObj){ let curObj = listOfObj[index]; if(curObj['deviceId'] === 'test'){ //Do whatever you want with the object } }
这是一个基本的例子,它描述了如何检查deviceId
是“test”还是“temp”,并且基于你可以在对象键上运行一个循环,并应用你想要应用的任何逻辑。
希望这可以帮助。
document.addEventListener("DOMContentLoaded",function(e){ var obj = { "deviceId":"test", "temperature":11, "latitude":50, "longitude":19, "time":1, "id":398 } if(obj["deviceId"]==="test"){ Object.keys(obj).forEach(function(e){ alert(e+" "+obj[e]); }) } })
我build议你使用Lodash库。
var messages = [{msg1}, {msg2}]; var filteredMessages = _.filter(messages, {deviceId: "test"}); // filteredMessages is an Array of messages with deviceId equals to `test`
假设你的对象在一个数组中,你可以使用原生的JavaScript Array#filter
方法实现这个function,
var arr = [ {"deviceId":"test","temperature":11,"latitude":50,"longitude":19,"time":1,"id":398}, {"deviceId":"temp","temperature":11,"latitude":50,"longitude":19,"time":1,"id":399}, {"deviceId":"temp","temperature":11,"latitude":50,"longitude":19,"time":1,"id":400}, {"deviceId":"test","temperature":11,"latitude":50,"longitude":19,"time":1,"id":01}, {"deviceId":"temp","temperature":11,"latitude":50,"longitude":19,"time":1,"id":402} ]; var results = arr.filter(function(obj) { // Return true to keep the element return obj.deviceId === "test"; }); console.log(results);