다음과 같은 객체 리터럴 배열을 만들어야합니다.
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;
위의 접근 방식은 각 액세스에 대한 키를 전체 객체 배열에서 검색하는 것보다 훨씬 빠르고 관용적이어야합니다.
답변
ES6에서 이와 같은 작업을 수행 할 수 있습니다.
new Array(10).fill().map((e,i) => {
return {idx: i}
});
답변
이것이 Array # map 이 잘하는 것입니다
var arr = oFullResponse.results.map(obj => ({
key: obj.label,
sortable: true,
resizeable: 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});
}
답변
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)));
}
답변
배열을 만든 다음 객체 리터럴을 추가합니다.
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};
}