지도 함수 내부에서 객체로 값을 푸시하고 해당 단일 객체를 반환하는 방법은 무엇입니까? 지도 함수 내부에 문자열 비교 조건이 있습니다. 사용을 시도 Object.assign
했지만 해당 배열 내부에 여러 개체가있는 배열을 반환합니다. 이 여러 개체 대신 배열 내부에 단일 개체를 기대하고 있습니다.
지도 기능
let arrayObj = arrayToTraverse.map(function(item) {
var myObj = {};
if(item.inputvalue === 'Name'){
Object.assign(myObj, {name: item.value});
} else if (item.inputvalue === 'Email'){
Object.assign(organizerInfo, {email: item.value});
} else if (item.inputvalue === 'Company'){
Object.assign(organizerInfo, {company: item.value});
}
return myObj;
});
console.log("The array object is", arrayObj)
다음과 같이 객체 배열을 반환합니다.
[
{
"name": "Tom"
},
{
"email": "[email protected]"
},
{
"company": "ABC"
}
]
하지만 내가 기대하는 배열은
[
{
"name": "Tom",
"email": "[email protected]",
"company": "ABC"
}
]
// or
[
"returned": {
"name": "Tom",
"email": "[email protected]",
"company": "ABC"
}
]
arrayToTraverse의 예는 다음과 같이 고려할 수 있습니다.
[
{
"id": "1",
"inputvalue": "Name",
"value": "Tom",
"type": "Short Text"
},
{
"id": "2",
"inputvalue": "Email",
"value": "[email protected]",
"type": "Email ID"
},
{
"id": "3",
"inputvalue": "Company",
"value": "Google",
"type": "Long Text"
}
]
간단히 말해, reduce
한 배열이 아닌 단일 객체 에 대한 배열을 시도 map
하는 것입니다.
var arrayToTraverse = [
{inputvalue:"Name",value:"Tom"},
{inputvalue:"Email",value:"[email protected]"},
{inputvalue:"Company",value:"ABC"},
{inputvalue:"Foo",value:"Bar"} // wont show up
];
var valuesRequired = ["Name","Email","Company"];
var result = arrayToTraverse.reduce( (acc, item) => {
if(valuesRequired.includes(item.inputvalue))
acc[item.inputvalue.toLowerCase()] = item.value;
return acc;
}, {});
console.log(result);
편집 : 필수 필드에 대한 조회 배열을 추가했습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다