【发布时间】:2018-12-19 23:52:43
【问题描述】:
在 JavaScript 中(可以使用 jQuery),我将如何转换对象数组:
// Array of objects.
var myArray = [ { code: "X", selected: true }, { code: "Y", selected: false }, { code: "Z", selected: true } ];
变成二维值数组?:
var myArray[0][0] = "X";
myArray[0][1] = true;
myArray[1][0] = "Y";
myArray[1][1] = false;
myArray[2][0] = "Z";
myArray[2][1] = true;
我问是因为我在 AJAX 调用中发送数据时遇到了一些问题,该调用将序列化的表单数据与对象数组结合在一起。
我需要将所有数据映射到 View Model 服务器端:
public class MyViewModel
{
public MyViewModel()
{
selectedRelatedTaxes = new List<RelatedTax>();
}
public string co { get; set; }
public string category { get; set; }
public string taxCode { get; set; }
public List<RelatedTax> myArray { get; set; }
}
public class RelatedTax
{
public string code { get; set; }
public bool selected { get; set; }
}
这是试图将所有数据组合在一起的 JavaScript 函数:
function GetAllData() {
var result = {};
if (!$('#FormID'))
return {};
result = $('#FormID:not(input[data-function="partOfArray"])').serializeArray();
var myArray = [];
$('input[data-function="partOfArray"]').each(function (index) {
var code = $(this).val();
var selected = $(this).is(':checked');
myArray.push({ code: code, selected: selected });
});
if (result) {
result.push({ name: 'myArray', value: myArray });
}
return result;
}
如果我使用上面的函数,我会在 AJAX 调用中得到这个数据:
数组未正确映射到列表服务器端。
如果我改用这个 JavaScript 函数:
function Test() {
var myArray = [];
$('input[data-function="partOfArray"]').each(function (index) {
var code = $(this).val();
var selected = $(this).is(':checked');
myArray.push({ code: code, selected: selected });
});
return { myArray: myArray };
}
我在 AJAX 调用中得到这个数据:
数组确实映射到服务器端的列表。但这当然缺少所有其他数据。
第二张图片的数据格式是什么?对我来说,它看起来像一个二维数组。如何将我的数据数组与所有其他数据一起转换为该格式?
这是进行 AJAX 调用的代码:
function LoadAddCompanyTaxWizard(url) {
var formData = GetAllData();
$.ajax(
{
cache: false,
method: "POST",
url: url,
data: formData
},
.error(...)
.success(...),
.complete(...)
);
}
【问题讨论】:
-
问题出在其他地方。发布将数据发布到服务器的代码。
-
下面有很多关于如何从对象数组转换为数组数组的好答案。但是,查看其余代码并不清楚为什么您没有首先制作您想要的数组。为什么不直接使用
Array.push([code, selected ])开始? -
@SalmanA 我已经包含了进行 AJAX 调用的函数。
-
@HereticMonkey 我很抱歉标题确实让它重复了。更改标题以反映真正的潜在问题可能是最好的,尽管我真的不知道该标题是什么。
标签: javascript c# jquery arrays asp.net-mvc