javascript - 将所有传入的 JSON 消息存储在数组中并使用 javascript 检索
问题描述
我的应用程序每 10 分钟从另一个应用程序接收 JSON 数据。我需要存储传入的 JSON 消息以及何时收到新消息。我需要根据来自这两个消息的数据进行比较和计算。我该怎么做?
我试过这样(只是测试 - 不是用实际数据):
var inputData = []
inputData = JSON.stringify(data1)
jsonArray.push(inputData)
var jsonArray = []
inputData = JSON.stringify(data2)
jsonArray.push(inputData)
for (var i = 0; i < jsonArray.length; i++) {
jsonData = JSON.parse(jsonArray[i])
if ((data3.x === jsonData.x))
{
document.write("\n")
document.write(jsonData.x);
}
}
但我的问题是,每当有新消息进入时,都会调用此模块并对其jsonArray
进行初始化。那么,当新消息到来时,我们如何使模块中的数组或(以前的 JSON 消息)可用?我需要在代码中有第二个数组吗?非常感谢你的帮助。
这是传入消息的示例:
data1 = {"Battery":4.28,"moisture":15.88,"temperature":28,"messageType":"MOIST_TEMP","deviceId":"A371A","timestamp":"2019-12-02T02:53:25.000Z"}
解决方案
我认为你可以这样做希望这有帮助
//Suppose the Incoming Message is this
let incomingMessage = { "Battery": 9.780, "moisture": 75.88, "temperature": 36, "messageType": "MOIST_TEMP", "deviceId": "A371A", "timestamp": "2019-12-02T02:53:25.000Z" }
// The JsonArray you have right Now which stores the incoming Message
let jsonArray = [
{ "Battery": 4.28, "moisture": 15.88, "temperature": 28, "messageType": "MOIST_TEMP", "deviceId": "A371A", "timestamp": "2019-12-02T02:53:25.000Z" },
{ "Battery": 9.00, "moisture": 77.88, "temperature": 32, "messageType": "MOIST_TEMP", "deviceId": "A371A", "timestamp": "2019-12-02T02:53:25.000Z" },
{ "Battery": 4.28, "moisture": 15.88, "temperature": 28, "messageType": "MOIST_TEMP", "deviceId": "A371A", "timestamp": "2019-12-02T02:53:25.000Z" }
]
let isExist = []
//check that incoming message exits in the jsonArray
for (let i = 0; i < jsonArray.length; i++) {
let found = true;
for (let p in incomingMessage) {
if (incomingMessage.hasOwnProperty(p)) {
if (jsonArray[i][p] !== incomingMessage[p]) {
found = false;
break;
}
}
}
isExist.push(found)
}
//Push if Incoming message doesn't exist
if(isExist.indexOf(true)<=-1){
jsonArray.push(incomingMessage)
}
console.log(jsonArray)
推荐阅读
- python - 与 Python subprocess.Popen 的 SSH 会话不显示 Bash 提示
- azure-logic-apps - 来自逻辑应用标准的 net tcp wcf 服务(本地)访问
- node.js - 在 Web (MERN) 应用程序中排队用户?
- java - 如何将两个通用队列组合在一起?
- react-native - 无法在未安装的组件上找到节点(react-sortable-hoc)
- javascript - 在 Vue 中使用 i18n.detectLanguage()
- ckan - ckan 2.9 只允许上传某些文件类型
- javascript - 在 index.html 文件中加载脚本时设置授权标头
- python - 图中每个节点与列表中元素之间的最短路径
- r - 使用 rep() 和 seq() 创建序列