루프에서 객체 리터럴 배열을 만드는 방법은 무엇입니까?
-
18-09-2019 - |
문제
다음과 같은 객체 리터럴 배열을 만들어야합니다.
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 = oFullResponse.results.map(obj => ({
key: obj.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 = 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
}
});
제휴하지 않습니다 StackOverflow