Push不是函数数组填充

时间:2015-10-21 13:38:54

标签: javascript

我希望有一个数组结构如下:

var myMap = {id: ['0', '1'], name:['Op', 'Op2']}

现在OpOp2$.each这样做:

var myMap = {};
var count = 0
$.each(GlobalVariables.availableProviders, function(indexProvider, provider) 
    {
        myMap.push({
            id: count,
            name: provider['first_name']
        });

        count ++;
    });

但在push上,控制台显示以下错误:

  

myMap.push不是函数

我做错了什么?

4 个答案:

答案 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'...]}

但我不推荐你这种结构。如果同时存储idname,建议将它们链接在一起。例如:如果id值始终是唯一整数,则可以使myMap成为数组

var myMap[0]='Op';
var myMap[1]='Op2';
var myMap[2]='Op3';
var myMap[3]='Op4';
...