我有以下对象:
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]]
我为此附上了一个小提琴链接。我猜问题出在数组推函数的用法上。请帮忙。
您只需要删除count变量初始化外部的方括号即可。尝试:
var count = data.count;
代替:
var count = [data.count];
小提琴更新。