2013-08-29 1 views
0

У меня есть данные, возвращаемые из API как JSON. В этом есть массив результатов с объектом результата/хэшем между 5 и 9 ключами - id, url, title, type, что-то вроде.Использование заданных пользователем аргументов в качестве ключей в Javascript

Если я хочу, чтобы вырезать ненужные вещи и возвращает массив результатов с только название и URL, я могу это сделать:

function getTitleAndUrl(yourDataObject){ 
var results = yourDataObject.results; 
var len = results.length; 
var out = []; 

for(var i = 0; i < len; i++) { 
    out.push({ 
     title: results[i].title, 
     url: results[i].url 
    }); 
} 
    return out; 
}; 

И я получаю все результаты с только название и URL.

Как я могу сделать так, чтобы некоторые аргументы, переданные в функцию, стали эквивалентом «title» и «url»? Идея такова:

function getSpecificData(yourData, arg1, arg2){ 
    var results = yourData.results; 
    var len = results.length; 
    var out = []; 

    for(var i = 0; i < len; i++){ 
    out.push({ 
     arg1: results[i].arg1, 
     arg2: results[i].arg2 
    }); 
} 
    return out; 
} 

Где arg1 и arg2 может быть название, URL, как и в предыдущем примере, или идентификатор, описание и т.д.

Любая помощь очень ценится.

+0

Вы должны взглянуть на https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Working_with_Objects. Это принесет вам много пользы. – Vishwanath

ответ

1

проход в arg1 и arg2 как строки, то это должно работать:

function getSpecificData(yourData, arg1, arg2){ 
    var results = yourData.results; 
    var len = results.length; 
    var out = []; 

    for(var i = 0; i < len; i++){ 
    var data = {}; 
    data[arg1] = results[i][arg1]; 
    data[arg2] = results[i][arg2]; 
    out.push(data); 
    } 
    return out; 
} 

Рабочий пример - http://jsfiddle.net/LasCB/1/

+0

Это великолепно. Так близко, но я просто не мог обойти его. Большое спасибо! – Swooop

1

В цикле for:

var obj = {}; 

obj[ key1 ] = value1; 
obj[ key2 ] = value2; 

out.push(obj); 

Где key1 и key2 являются ключами вы хотите использовать.

+0

Да, это работает и ответ выше дает мне необходимую гибкость. Спасибо всем – Swooop

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