2015-12-31 5 views
1

У меня есть ниже объект:Javascript массив толчок вопрос

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 для этого. Я думаю, проблема связана с использованием функции push-массива. Пожалуйста помоги.

+0

Ваша ссылка на скрипку, кажется, работает –

+0

Выполнял проб и ошибок. Просто заметил, что я понял. –

ответ

3

Вам просто нужно удалить квадратную скобку вне инициализации переменной счетчика. Попробуйте:

var count = data.count; 

Вместо:

var count = [data.count]; 

Fiddle обновляется.

+0

Спасибо, я понял. –

0

Заменить вар count = [data.count]; с count = Object.keys(data).length

Может быть, это помогает.

+0

Зачем мне это делать? –

+0

Это может быть другая альтернатива, потому что я попытался с console.js 'console, там var count = Object.keys (data) .length работает, но var count = data.count; не работает. –

+0

Извините, что мое имя было непонятным. Я не хочу брать счет. Просто нужен этот массив. –

Смежные вопросы