我的陣列中有一個資料,看起來像這樣。
const arr = [ { devSth: { h1: [1], h2: [1], } }, ];
我有一個函式,它應該修改這個陣列。它看起來像這樣:
const modifyArr = (data) => { data.forEach(el => { let keys = el.devSth && Object.keys(el.devSth); keys.forEach(key => { el.devSth[key].map(el => { return { name: el, val: 'lalala' } }) }) }) return data; }
然后我正在使用我的功能:
const newArr = modifyArr(arr); console.log(newArr);
預期輸出:
[{ devSth: { h1: [{name: 1, val: 'lalala'}], h2: [{name: 1, val: 'lalala'}] } }]
實際輸出:
[{ devSth: { h1: [1], h2: [1] } }]
將不勝感激任何幫助。
uj5u.com熱心網友回復:
您正在映射值,但沒有設定它們(第 5 行):
const modifyArr = (data) => {
data.forEach(el => {
let keys = el.devSth && Object.keys(el.devSth);
keys.forEach(key => {
el.devSth[key] = el.devSth[key].map(el => {
return {
name: el,
val: 'lalala'
}
})
})
})
return data;
}
這是未經測驗的。
uj5u.com熱心網友回復:
您.map不會將操作結果分配回原始鍵h1和h2. 所以它不會修改那些。
只是改變
el.devSth[key].map(el => {
return {
name: el,
val: 'lalala'
}
})
到
el.devSth[key] = el.devSth[key].map(el => {
return {
name: el,
val: 'lalala'
}
const arr = [{
devSth: {
h1: [1],
h2: [1],
}
}, ];
const modifyArr = (data) => {
data.forEach(el => {
let keys = el.devSth && Object.keys(el.devSth);
keys.forEach(key => {
el.devSth[key] = el.devSth[key].map(el => {
return {
name: el,
val: 'lalala'
}
})
})
})
return data;
}
const newArr = modifyArr(arr);
console.log(newArr);
uj5u.com熱心網友回復:
另一種方法:
const arr = [{
devSth: {h1: [1], h2: [1]}
}];
let obj = arr[0].devSth, number;
for (const prop in obj){
number = obj[prop][0];
obj[prop] = [{name: number, val: 'lalala'}];
}
console.log([{devSth: obj}])
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/410019.html
標籤:
