Javascript 无法部分更改JSON数据

Javascript 无法部分更改JSON数据,javascript,json,Javascript,Json,我被这一小段并不复杂的代码困住了,这一小段JSON数据不能像其他任何东西一样改变 原始JSON数据: apptData.push({ “服务”:serviceName, “持续时间”:持续时间, “技术”:选择技术 }) 我想把它整合到findTimeSlots()中的:finalApptData 我想更改的一小段数据是:finalApptDatap[j]。服务用于保存更多信息,但在使用console.log()查看时不会更改 我使用console.log(finalApptData)在所有要检

我被这一小段并不复杂的代码困住了,这一小段JSON数据不能像其他任何东西一样改变

原始JSON数据: apptData.push({ “服务”:serviceName, “持续时间”:持续时间, “技术”:选择技术 })

我想把它整合到findTimeSlots()中的:finalApptData

我想更改的一小段数据是:finalApptDatap[j]。服务用于保存更多信息,但在使用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);
    });
}
var-apptData=[];
函数addApptData(serviceName、rawtduration、selectedTech){
apptData.push({
“服务”:serviceName,
“持续时间”:持续时间,
“技术”:选择技术
})
}
函数reduceAppData(索引){
接头附件数据(索引1);
}
函数findTimeSlots(dateStr){
var finalApptData=[];
对于(变量i=0;i//所有这些行更改finalApptData[j]。服务都是多次尝试的结果。
//我一定是做错了什么,但我不知道在哪里。
**finalApptData[j].service=“已更改”;
finalApptData[j].service.push(“apptData[i].service”);
finalApptData[j].service.push(apptData[i].service);
finalApptData[j].服务+=apptData[i].服务;
finalApptData[j]。服务+=”,“+apptData[i]。服务**
finalApptData[j]。持续时间+=apptData[i]。持续时间;
重复=真;
}
}
如果(!重复){
finalApptData.push(apptData[i]);
}
}
console.log(finalApptData);
$.post('./getTimeSlots.php',{'date':dateStr},函数(响应){
console.log(“响应:+响应”);
});
}

问题在于apptData是一个对象而不是数组,因此像数组一样附加到对象将不起作用。相反,我创建了一个数组,并将其推到该数组

var-apptData=[];
函数addApptData(serviceName、rawtduration、selectedTech){
apptData.push({
“服务”:serviceName,
“持续时间”:持续时间,
“技术”:选择技术
})
}
函数reduceAppData(索引){
接头附件数据(索引1);
}
函数findTimeSlots(dateStr){
var finalApptData=[];
对于(变量i=0;ifindTimeSlots(“”)什么“一小段JSON数据”不能更改?你怎么知道的?是否报告错误?有什么事情发生吗?所有这些换行的finalApptData[j]。服务都是多次尝试的结果。我一定是做错了什么,但我不知道在哪里。我们不知道您的json看起来像什么。您的
console.log()
语句在尝试更改值的语句之前。@Pointy它不是我用来检查是否更改的语句。我使用console.log(finalApptData)中的第二个;在循环之外,我只是把它放在那里看看它是否有效。它确实显示了数据,但之后的任何更改都不会起作用;addApptData(“V”,2,“AC”);addApptData(“V3”,32,“AC”);addApptData(“Va3”,322,“AxC”);我得到一个错误,推送不是一个函数。