0

我有从 API 以 JSON 形式返回的数据。其中有一个结果数组,其中包含 5 到 9 个键的结果对象/散列 - id、url、title、type 之类的东西。

如果我想去掉不必要的东西并返回一个只包含标题和 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;
};

我只用标题和网址就得到了所有结果。

我怎样才能使传递给函数的一些参数成为'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(如前面的示例)或 id、描述等。

非常感谢任何帮助。

4

2 回答 2

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/

于 2013-08-29T11:05:58.230 回答
1

for循环中:

var obj = {};

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

out.push( obj );

您要使用的密钥在哪里key1以及在哪里。key2

于 2013-08-29T11:05:58.723 回答