javascript 如何在循环中创建对象常量数组?

pu3pd22g  于 2023-03-16  发布在  Java
关注(0)|答案(9)|浏览(140)

我需要创建一个对象常量数组,如下所示:

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

83qze16e

83qze16e1#

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

ubbxdtey2#

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;

与每次访问都在整个对象数组中搜索键相比,上面的方法应该要快得多,也更符合习惯用法。

5us2dqdw

5us2dqdw3#

你可以在ES6中做类似的事情。

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

sycxhyv74#

这正是Array#map擅长的

var arr = oFullResponse.results.map(obj => ({
    key: obj.label,
    sortable: true,
    resizeable: true
}))
c9x0cxw0

c9x0cxw05#

这将工作:

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

n6lpvg4x6#

和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)));
}
62o28rlo

62o28rlo7#

如果你想在ES6中使用@tetra更进一步,你可以使用Object spread syntax并做如下操作:

const john = { firstName: "John", lastName: "Doe" };
const people = new Array(10).fill().map((e, id) => ({ ...john, id }));
qkf9rpyu

qkf9rpyu8#

我将创建数组,然后向其追加对象文本。

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

pw9qyyiw9#

var myColumnDefs = new Array();

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

相关问题