javascript - JSON 数据部分无法更改
问题描述
我被这段不应该很复杂的一小段代码所困扰,这一小段 JSON 数据无法像其他所有内容一样更改。
原始 JSON 数据: apptData.push({ 'service': serviceName, 'duration': rawDuration, 'tech' : selectedTech })
我想将其合并为:findTimeSlots ()中的finalApptData
我要更改的一小部分数据是:finalApptDatap[j].service以保存更多信息,但使用 console.log() 查看时不会更改
我使用console.log(finalApptData); 在所有检查结束时。
var apptData = [];
function addApptData(serviceName, rawDuration, selectedTech){
apptData.push({
'service': serviceName,
'duration': rawDuration,
'tech' : selectedTech
})
}
function reduceApptData(index){
apptData.splice(index, 1);
}
function findTimeSlots(dateStr){
var finalApptData = [];
for(var i = 0; i < apptData.length; i++){
var duplicated = false;
for(var j = 0; j < finalApptData.length; j++){
if(finalApptData[j].tech == apptData[i].tech){
//All those line changing finalApptData[j].service are from multiple attempts.
// I must have done something wrong but I'm not sure where.
**finalApptData[j].service = "changed";
finalApptData[j].service.push("apptData[i].service");
finalApptData[j].service.push(apptData[i].service);
finalApptData[j].service += apptData[i].service;
finalApptData[j].service += ", "+apptData[i].service;**
finalApptData[j].duration += apptData[i].duration;
duplicated = true;
}
}
if(!duplicated){
finalApptData.push(apptData[i]);
}
}
console.log(finalApptData);
$.post('./getTimeSlots.php', {'date': dateStr}, function(response){
console.log("Response: "+response);
});
}
解决方案
问题是 apptData 是一个对象而不是数组,因此像数组一样附加到对象是行不通的。相反,我创建了一个数组并将其推送到该数组。
var apptData = [];
function addApptData(serviceName, rawDuration, selectedTech){
apptData.push({
'service': serviceName,
'duration': rawDuration,
'tech' : selectedTech
})
}
function reduceApptData(index){
apptData.splice(index, 1);
}
function findTimeSlots(dateStr){
var finalApptData = [];
for(var i = 0; i < apptData.length; i++){
var duplicated = false;
for(var j = 0; j < finalApptData.length; j++){
if(finalApptData[j].tech == apptData[i].tech){
let obj = [apptData[i].service];
obj.push(finalApptData[j].service);
finalApptData[j].service = obj;
finalApptData[j].duration += apptData[i].duration;
duplicated = true;
}
}
if(!duplicated){
finalApptData.push(apptData[i]);
}
}
console.log(finalApptData);
}
addApptData("A", 1, "X");
addApptData("V", 2, "C");
addApptData("V3", 32, "C");
addApptData("Va3", 322, "AxC");
findTimeSlots("");
推荐阅读
- c++ - 如何修复艺术ASCII,我点击一个字母很好,但输入一个阶段艺术出来错误
- elasticsearch - 如何执行差异或增量快照以及它是如何工作的?
- ios - 尽管不再满足循环条件,但仍卡在 While 循环中
- cookies - 设置 cookie 时未定义的用户名
- r - 如何计算R中二项式样本的成功次数?
- node.js - 无法验证特定网络上 Node js 中的第一个证书错误
- windows - syscall.Syscall() 在 Golang 的 syscall 包中是如何以及在哪里为特定于 Windows 的系统调用定义的?
- javascript - javascript异步/等待;误解了这段代码片段
- triggers - 如何在雪花中触发某些东西
- css - 如何只允许在 WooCommerce 中存款?