基于一个键值访问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);