238

次のようなオブジェクト リテラルの配列を作成する必要があります。

var myColumnDefs = [
    {key:"label", sortable:true, resizeable:true},
    {key:"notes", sortable:true,resizeable:true},......

次のようなループで:

for (var i = 0; i < oFullResponse.results.length; i++) {
    console.log(oFullResponse.results[i].label);
}

の値は、配列の各要素にあるkey必要があります。results[i].label

4

9 に答える 9

427
var arr = [];
var len = oFullResponse.results.length;
for (var i = 0; i < len; i++) {
    arr.push({
        key: oFullResponse.results[i].label,
        sortable: true,
        resizeable: true
    });
}
于 2009-08-17T20:09:38.630 に答える
62

RaYell の回答は適切です。あなたの質問に回答しています。

ただし、サブオブジェクトを値として持つラベルをキーとするオブジェクトを実際に作成する必要があるように思えます。

var columns = {};
for (var i = 0; i < oFullResponse.results.length; i++) {
    var key = oFullResponse.results[i].label;
    columns[key] = {
        sortable: true,
        resizeable: true
    };
}

// Now you can access column info like this. 
columns['notes'].resizeable;

上記のアプローチは、アクセスごとにオブジェクト配列全体でキーを検索するよりもはるかに高速で慣用的です。

于 2009-08-17T20:16:21.927 に答える
17

これがArray#mapの得意とするところです

var arr = oFullResponse.results.map(obj => ({
    key: obj.label,
    sortable: true,
    resizeable: true
}))
于 2016-10-14T23:16:24.397 に答える
4

これはうまくいきます:

 var myColumnDefs = new Object();
 for (var i = 0; i < oFullResponse.results.length; i++) {
     myColumnDefs[i] = ({key:oFullResponse.results[i].label, sortable:true, resizeable:true});
  }
于 2014-12-03T09:39:22.277 に答える
4

Nick Riggs と同じアイデアですが、コンストラクターを作成し、それを使用して新しいオブジェクトを配列にプッシュします。クラスのキーの繰り返しを回避します。

var arr = [];
var columnDefs = function(key, sortable, resizeable){
    this.key = key; 
    this.sortable = sortable; 
    this.resizeable = resizeable;
    };

for (var i = 0; i < len; i++) {
    arr.push((new columnDefs(oFullResponse.results[i].label,true,true)));
}
于 2015-10-27T22:43:04.637 に答える
3

配列を作成し、オブジェクト リテラルを追加します。

var myColumnDefs = [];

for ( var i=0 ; i < oFullResponse.results.length; i++) {

    console.log(oFullResponse.results[i].label);
    myColumnDefs[myColumnDefs.length] = {key:oFullResponse.results[i].label, sortable:true, resizeable:true};
}
于 2009-08-17T20:10:20.690 に答える
3
var myColumnDefs = new Array();

for (var i = 0; i < oFullResponse.results.length; i++) {
    myColumnDefs.push({key:oFullResponse.results[i].label, sortable:true, resizeable:true});
}
于 2009-08-17T20:12:06.770 に答える