Javascript 在每个内部创建多维数组
我想根据在ajax post请求中检索到的值创建一个多维数组 API响应Javascript 在每个内部创建多维数组,javascript,Javascript,我想根据在ajax post请求中检索到的值创建一个多维数组 API响应 var mulArr = []; $.ajax({ type: 'POST', url: '/path/to/APIendpoint', dataType: 'json', data: { codes: codes }, success: function(data) { $.each(data, function(key, value) {
var mulArr = [];
$.ajax({
type: 'POST',
url: '/path/to/APIendpoint',
dataType: 'json',
data: {
codes: codes
},
success: function(data) {
$.each(data, function(key, value) {
mulArr[key]['id'] = value.code;
mulArr[key]['text'] = value.name;
});
}
});
[{“id”:“35”,“name”:“IAMA”,“code”:“24”},{“id”:“23”,“name”:“IAMB”,“code”:“08”}]
jQuery代码
var mulArr = [];
$.ajax({
type: 'POST',
url: '/path/to/APIendpoint',
dataType: 'json',
data: {
codes: codes
},
success: function(data) {
$.each(data, function(key, value) {
mulArr[key]['id'] = value.code;
mulArr[key]['text'] = value.name;
});
}
});
语法错误
TypeError:mulArr[key]未定义
我可以从端点正确地获取数据
,我遇到的唯一错误就是上面提到的错误。在透视图中,我只想做一个多维数组/对象,如下所示:
mulArr[0]['id'] = '24';
mulArr[0]['text'] = 'IAMA';
mulArr[1]['id'] = '08';
mulArr[1]['text'] = 'IAMB';
或
[Object{id=“24”,text=“IAMA”},Object{id=“08”,text=“IAMB”}]
发生这种情况是因为mulArr[0]不是对象,而mulArr[0]['id']将抛出该错误。试试这个:
var mulArr = [];
$.ajax({
type: 'POST',
url: '/path/to/APIendpoint',
dataType: 'json',
data: {
codes: codes
},
success: function(data) {
$.each(data, function(key, value) {
mulArr.push({id: parseInt(value.code), text: value.name});
// or try this if select2 requires id to be continuous
// mulArr.push({id: key, text: value.name});
});
}
});
使用push(一种更干净的方法)的替代方法是定义新对象
mulArr[key] = {
id: value.code,
text:value.name
};
实现您想要的另一种方法是:
var mulArr = [];
$.ajax({
type: 'POST',
url: '/path/to/APIendpoint',
dataType: 'json',
data: {
codes: codes
},
success: function(data) {
mulArr = data.map(value => ({ id: parseInt(value.code), text: value.name }));
}
});
这更干净,而且还使用内置映射而不是jQuery$。each。通过这种方式,您还可以了解使用map函数(返回新数组)的好处,以及ES2015的有用功能
如果您不能使用ES6(ES2015),这里有另一个版本:
mulArr = data.map(function (value) {
return {
id: parseInt(value.code),
text: value.name
};
});
我想你已经看到了它的优点。当放入
$中时,console.log(key)
显示了什么。每个?@Ian-它将输出一个数字索引0 1
,感谢这个伙伴,错误现在起作用了。但是,我如何使多维数组有点像这样:[Object{id=“24”,text=“IAMA”},Object{id=“08”,text=“IAMB”}]
?@LeandroGarcia请记录服务器的响应(回调中的数据),然后在分配响应后记录mulArr。也许这有助于了解问题的症结所在。对于这个伴侣来说,这个错误现在起作用了。但是,我怎样才能使多维数组有点像这样:[Object{id=“24”,text=“IAMA”},Object{id=“08”,text=“IAMB”}
?什么是Object{id=“24”,text=“IAMA”}
?这是我预期的输出,使用上面的代码,我构建了一个数组,如何将其转换为类似的内容?对不起,我的意思是{id:“24”,text:“IAMA”}
和对象{id=“24”,text=“IAMA”}
之间有什么区别?请注意,后者不是有效的javascript构造,因为Jquery select2似乎无法识别我重建的数组。它需要类似的输入。这是当我将变量转储到控制台时它可以接受的变量的值[Object{id=“24”,text=“IAMA”},Object{id=“08”,text=“IAMB”}]
。