Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/442.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在每个内部创建多维数组_Javascript - Fatal编程技术网

Javascript 在每个内部创建多维数组

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) {

我想根据在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) {
            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”}]