[英]Converting array of objects into a single object
這是我的初始數組:
[
{
id: 1,
name: 'pos',
code: 'pos123',
appCode: 22,
},
{
id: 2,
name: 'tailor',
code: 'tailor123',
appCode: 21,
}
]
我想要的輸出:
{
pos123: {
id: 1,
name: 'pos',
code: 'pos123',
appCode: 22,
},
tailor123: {
id: 2,
name: 'tailor',
code: 'tailor123',
appCode: 21,
},
}
我嘗試使用map
進行此操作,但無法弄清楚。 我應該在這里使用reduce
嗎?
您的輸出不是數組,而是一個對象,因此必須使用reduce
。 您只能使用map
將一個數組中X個項目轉換為另一個數組中X個項目。
const input=[{id:1,name:'pos',code:'pos123',appCode:22,},{id:2,name:'tailor',code:'tailor123',appCode:21,}] const output = input.reduce((a, obj) => { a[obj.code] = obj; return a; }, {}); console.log(output);
您可以使用Object.assign
將數組映射到鍵和值的預期形狀。 嘗試:
let array = [ { id: 1, name: 'pos', code: 'pos123', appCode: 22, }, { id: 2, name: 'tailor', code: 'tailor123', appCode: 21, } ]; let output = Object.assign(...array.map(x => ({ [x.code]: x }))); console.log(output);
var yourArray = [
{
id: 1,
name: 'pos',
code: 'pos123',
appCode: 22,
},
{
id: 2,
name: 'tailor',
code: 'tailor123',
appCode: 21,
}
];
//this is what you required
var output = yourArray.reduce((obj, item) => {
obj[code] =item;
return obj;
}, {});
使用數組歸約功能
var data = [{ id: 1, name: 'pos', code: 'pos123', appCode: 22, }, { id: 2, name: 'tailor', code: 'tailor123', appCode: 21, } ] var modData = data.reduce(function(acc, curr) { //acc is the empty array passed as argument // if empty array does not have a property pos123 or so // create a key by this name if (!acc.hasOwnProperty(curr.code)) { // then add property to it acc[curr.code] = { id: curr.id, name: curr.name, appCode: curr.appCode } } return acc; }, {}) console.log(modData)
使用循環可以做到這一點。
const resp = [ { id: 1, name: 'pos', code: 'pos123', appCode: 22, }, { id: 2, name: 'tailor', code: 'tailor123', appCode: 21, } ] let res = {}; for (let i = 0; i < resp.length; i++) { res[resp[i]['code']] = { id: resp[i]['id'], name: resp[i]['name'], appCode: resp[i]['appCode'], code: resp[i]['code'] } } console.log(res);
似乎其他解決方案在結果對象中包括“代碼”屬性。 這個不
const test = [ { id: 1, name: 'pos', code: 'pos123', appCode: 22, }, { id: 2, name: 'tailor', code: 'tailor123', appCode: 21, } ]; const test2 = JSON.parse(JSON.stringify(test)); const result = document.querySelector("#result"); result.textContent = "**No redundancy\\n" + JSON.stringify( test.reduce( (newObj, el) => (newObj[el.code] = delete el.code && el) && newObj, {} ), null, " "); // alternative result.textContent += "\\n\\n**Alternative\\n" + JSON.stringify( test2.reduce( (newObj, el) => (newObj[el.code] = el) && newObj, {} ), null, " ");
<pre id="result"></pre>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.