我有传入的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}
我只想要那些设备ID是测试而不是临时的json对象。我正在尝试过滤 JSON。我该怎么做?
我给你写一个例子
假设你有列表
let obj = {
"deviceId":"test",
"temperature":11,
"latitude":50,
"longitude":19,
"time":1,
"id":398
}
然后,您可以通过obj['deviceId']
选择deviceId
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]);
})
}
})
我建议你使用Lodash库。
var messages = [{msg1}, {msg2}];
var filteredMessages = _.filter(messages, {deviceId: "test"});
// filteredMessages is an Array of messages with deviceId equals to `test`
假设你的对象在一个数组中,你可以使用原生的JavascriptArray#filter
方法来实现这一点,
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);