javascript数组推送问题

时间:2015-12-31 06:36:14

标签: javascript jquery arrays

我有以下对象:

Configs = {};
Configs['category'] = [];
Configs['category']['prod1'] = [];
Configs['category']['prod1'].hosts ={
  'table': {
    'count': 'total_remaining',
    'specs': [
      {
        'name': 'Test 1',
        'code': 'BrandName.Cat.Code.[X].Price'
      }
    ]
  }
}; 

我正在尝试使用以下代码创建一个要从数据库请求的元素数组:

var data = Configs["category"]["prod1"].hosts.table;
var count = [data.count];
var names = data.specs;
var namesArray = names.map(function(names) {
  var str = names['code'];
  var requiredPortion = str.split("[X]");
  var newStr = requiredPortion[0];
      return newStr;
  });
requestData = namesArray.reduce(function(a,b){if(a.indexOf(b)<0)a.push(b);return a;},[]); //remove duplicates
requestData.push(count);
console.log(count);
console.log(requestData);

所需的输出是:

["BrandName.Cat.Code.", "total_remaining"] 

但是,在执行我的代码时,我得到以下输出:

["BrandName.Cat.Code.", Array[1]]

我为此附上了一个小提琴link。我想问题是使用数组推送功能。请帮忙。

2 个答案:

答案 0 :(得分:4)

您只需删除count变量初始化之外的方括号。尝试:

var count = data.count;

而不是:

var count = [data.count];

Fiddle已更新。

答案 1 :(得分:0)

将变量count = [data.count];替换为count = Object.keys(data).length

也许这有帮助。