我希望有一个数组结构如下:
var myMap = {id: ['0', '1'], name:['Op', 'Op2']}
现在Op
和Op2
由$.each
这样做:
var myMap = {};
var count = 0
$.each(GlobalVariables.availableProviders, function(indexProvider, provider)
{
myMap.push({
id: count,
name: provider['first_name']
});
count ++;
});
但在push
上,控制台显示以下错误:
myMap.push不是函数
我做错了什么?
答案 0 :(得分:2)
myMap
是一个对象,而不是一个数组。
它看起来应该是一个数组并且结构化:
var myMap = [
{ id: '0', name: 'Op' },
{ id: '1', name: 'Op2' }
];
答案 1 :(得分:1)
在这种情况下,您的var myMap = {};
是一个对象。
对象dosnt有一个 push 方法,而不是 Array.prototype
简单的例子如何做到
var myMap = {
id: [],
name: []
}
myMap.id.push(/* value for id */);
myMap.id.name(/* name */);
答案 2 :(得分:0)
变量myMap
是一个不是数组的对象。
更改
var myMap = {id: ['0', '1'], name:['Op', 'Op2']}
到
var myMap = [{id: ['0', '1'], name:['Op', 'Op2']}]
答案 3 :(得分:0)
您问题的直接解决方案是:
myMap.id.push(count);
myMap.name.push(provider['first_name']);
...因此myMap
仍将包含如下值:
{id: ['0', '1', '2', '3', '4'... ], name:['Op', 'Op2', 'Op3', 'Op4', 'Op5'...]}
但我不推荐你这种结构。如果同时存储id
和name
,建议将它们链接在一起。例如:如果id
值始终是唯一整数,则可以使myMap
成为数组:
var myMap[0]='Op';
var myMap[1]='Op2';
var myMap[2]='Op3';
var myMap[3]='Op4';
...