gpt4 book ai didi

javascript - 从javascript中的数组中删除 "object having an array field"

转载 作者:行者123 更新时间:2023-12-03 04:26:08 26 4
gpt4 key购买 nike

这是我的代码:

var subMed = [ {med:'bm', sub:[ 'a' , 'b' ]} , {med:'bm', sub:[ 'c' , 'd' , 'e' ]} ];
var sal = [ {num:"1",amount:"500"} ];
var t = {Class:"1", subMeds:subMed, numOfSub:2, sals:sal };
var infoAcademic = [];
infoAcademic.push(t);

subMed = [ {med:'em', sub:[ 'p']} , {med:'bm', sub:[ 'r' , 's' ]} ];
sal = [ {num:"2",amount:"1500"},{num:"1",amount:"700"} ];
t = {Class:"1", subMeds:subMed, numOfSub:1, sals:sal };
infoAcademic.push(t);

var tempObj = infoAcademic[1]; // an object
var mediumSubjects = tempObj["subMeds"]; // an array

console.log(mediumSubjects);

for(i=0;i<mediumSubjects.length;i++){
var temp = {}; // object
temp = mediumSubjects[i];
if(temp["med"] == 'bm'){

tempObj["numOfSub"] = tempObj["numOfSub"] - temp["sub"].length;
var salArr = tempObj["sals"]; // array
var j = salArr.length;
if(salArr.length > 0){
while(j--){
var salObj = salArr[j]; // object
var howManySub = salObj["num"];
if(howManySub > tempObj["numOfSub"]){
salArr.splice(j,1);
}
}
}


console.log("removing from the medSubjects list: ");
console.log(temp);
var removed = mediumSubjects.splice(i, 1);
break;
}
}

console.log("removed element: ");
console.log(removed);
console.log(mediumSubjects);

当我编写此代码时,这是一个在线 js 编辑器 https://js.do/ ,代码给出了预期的结果。但是,当我将此代码合并到 JSP 页面的 onclick 函数中时,没有任何元素从 mediumSubjects 数组中删除。删除的元素显示为空。

但是,当我注释掉这部分时:

tempObj["numOfSubj"] = tempObj["numOfSub"] - temp["sub"].length;
var salArr = tempObj["sals"]; // array
var j = salArr.length;
if(salArr.length > 0){
while(j--){
var salObj = salArr[j]; // object
var howManySub = salObj["num"];
if(howManySub > tempObj["numOfSub"]){
salArr.splice(j,1);
}
}
}

令人惊讶的是,代码的行为符合预期 - 它从 mediumSubjects 数组中删除了该元素。

是否存在同步问题或其他问题?为什么会有这种不寻常的行为?

注意我需要从数组 mediumSubjects 中删除元素,因此 delete 在这里不起作用。

最佳答案

尝试这个变体:

var newMedSub = medSub.filter(function(elem) {
return elem.med !== 'em';
});

它将帮助您获得一个没有不必要对象的新数组。

关于javascript - 从javascript中的数组中删除 "object having an array field",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43708768/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com