我需要创建对象文字的阵列是这样的:

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

有帮助吗?

解决方案

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
    });
}

其他提示

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;

在上面的方法应该比搜索整个对象阵列,用于为每个访问的关键快得多和惯用的。

在尼克里格斯的相同的想法,但我通过使用它创建一个构造,以及一个推一个新的对象在数组中。它避免类的键的重复:

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)));
}

此将工作:

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

您可以做这样的事情在ES6。

new Array(10).fill().map((e,i) => {
   return {idx: i}
});

我创建阵列,然后将对象的文字追加到它。

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};
}
var myColumnDefs = new Array();

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

如果你想走得更远比ES6 @tetra可以使用所谓的“传播对象的语法”,做这样的事情:

let john = {
    firstName: "John",
    lastName: "Doe",
};

let people = new Array(10).fill().map((e, i) => {

    return {
        ...john,
        id: i
    }
});
scroll top