我有以下对象:
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。我想问题是使用数组推送功能。请帮忙。
答案 0 :(得分:4)
答案 1 :(得分:0)
将变量count = [data.count];
替换为count = Object.keys(data).length
也许这有帮助。