2016-02-17 7 views
0

У меня есть массив объектов, глядя, как это:Контурных/перебор массива объектов для возврата и массива строк - Javascript

[{"key":"aaa","value":true},{"key":"bbb","value":false},{"key":"ccc","value":true}] 

Как я могу итерацию через него, чтобы получить массив?

["aaa", "bbb", "ccc"] 

Я использую node.js, и это код. Когда я прохожу через него, я получаю только первые «aaa» и . Я хочу получить переменную, являющуюся массивом из 3 объектов?

router.get('/', function(req, res, next) { 
    db.executeSql("SELECT this FROM that", function (data, err) { 
     if (err) {  
      res.json(err); 
     } 
     else { 
      for (var i in data) { 
        for (var i=0; i < data.length; i++) { 
         var obj = data[i]; 
         for (var property in obj) { 
          var a = (obj[property]); 
           res.json(a); 
           } 
        } 
       } 
      } 
     } 
     res.end(); 
    }); 
    }); 

Если вы могли бы указать мне в правильном направлении или показать мне несколько примеров, спасибо!

ответ

6
var input = [{"key":"aaa","value":true},{"key":"bbb","value":false},{"key":"ccc","value":true}]; 

var output = input.map(function(datum){ 
    return datum.key; 
}); 

возвращает массив [ "AAA", "В", "КТС"]

+0

после добавления этого кода в другое заявлении \t \t \t выходного вара = Data.Map (функции (геодезический) { \t \t данные по возврату. \t \t \t}); \t \t \t res.json (выход); он возвращает [null, null] –

+0

Я вижу, что вы выяснили свою проблему ниже. В общем, можно запустить мой пример с помощью вашего любимого интерпретатора javascript и увидеть, что 'output' в этом случае фактически равен« [»aaa», «bbb», «ccc»] '. Итак, здесь есть несколько возможностей: возможно, входы ошибочны, и они не совпадают. Возможно, как вы используете фрагмент кода, не работает. Или, возможно, вызывающий абонент не получает результаты должным образом. Добавление отладочных заявлений (console.log или другое) обычно должно помочь вам сузить проблему. – AnilRedshift

+0

Вы правы Я использовал неправильный запрос. Теперь я вижу, что функция карты не отображает ее, а возвращает весь массив. Я тестировал его где-то еще, и он действительно работал. Как вы думаете, это может быть связано с модулем mssql, который я использую, или это моя ошибка где-то? –

0
var newArr = []; 
var data = [{"key":"aaa","value":true},{"key":"bbb","value":false},{"key":"ccc","value":true}]; 
for(var i=0;i<data.length;i++){ 
    newArr.push(data[i].key); 
} 
return newArr; 
Смежные вопросы