这是代码如何在此处创建嵌套数组以及如何自行对其进行数组化。我不能用于this.push的代码是什么,因为它不起作用.....
function getAddedItemDetailArray() {
debugger;
var arrItemDetail = [];
$(".clsaddNewItem").each(function () {
arrItemDetail.push({
"itemid": $(this).find(".clsHdfSitemId").val(),
"uomid": $(this).find(".clsUom").val(),
"orderqty": $(this).find(".clsOrderQuantity").val(),
"deliveringqty": $(this).find(".clsDeliveringQuantity").val(),
"listofgoodsdeliverynoteitemmapallocation": [$(this).find(".clsaddNewItemSub").each(function() {
**this**.push({
"itemwarehousedetailmapid": $(this).find(".clsLocation").val(),
"qty": $(this).find(".clsQty").val()
})
})]
})
});
return arrItemDetail;
}
答案 0 :(得分:1)
此JavaScript范围在函数内部时引用不同的对象。您可以详细了解this
和范围MDN documention
要解决该问题,建议您使用arrow function代替内部匿名函数,以保留访问正确this
的范围。
function getAddedItemDetailArray() {
debugger;
var arrItemDetail = [];
$(".clsaddNewItem").each(function () {
arrItemDetail.push({
"itemid": $(this).find(".clsHdfSitemId").val(),
"uomid": $(this).find(".clsUom").val(),
"orderqty": $(this).find(".clsOrderQuantity").val(),
"deliveringqty": $(this).find(".clsDeliveringQuantity").val(),
"listofgoodsdeliverynoteitemmapallocation": [$(this).find(".clsaddNewItemSub").each( () => {
this.push({
"itemwarehousedetailmapid": $(this).find(".clsLocation").val(),
"qty": $(this).find(".clsQty").val()
})
})]
})
});
return arrItemDetail;
}