问题描述
抱歉,如果重复了一些问题,但我搜索了很多但没有找到任何东西。 我必须在js中填写一张表格。为此,我采用对象数组(中心)的值并应用 map。 一切正常。
centers = [
{ 'center': 'Center 1','datos': { "key1":4.67,"key2":3.56
}
},{ 'center': 'Center 2','datos': { "key1":0.34,"key2":5}
},{ 'center': 'Center 3','datos': { "key1":3.7,"key2":2.5}
}
]
let result = centers.map(res => {
let columns = {'column1':res.datos.key1,'column2':res.datos.key2}
return columns;
})
/* result = [
[
{ column1: 4.67,column2: 3.56 },{ column1: 0.34,column2: 5 },{ column1: 3.7,column2: 2.5 }
]
]
*/
然而,项目“key1 ...... key1000”很多,我想在这样的地图函数中实现它们
var cc = ['key1','key2','key3','key4','key5'];
let result = centers.map(res => {
let columns = {'column1':res.datos.cc[0],'column2':res.datos.cc[1],...........}
return columns;
})
但它不取变量的值。 有可能映射这个吗?。谢谢。
解决方法
const centers = [{
'center': 'Center 1','datos': {
"key1": 4.67,"key2": 3.56
}
},{
'center': 'Center 2','datos': {
"key1": 0.34,"key2": 5
}
},{
'center': 'Center 3','datos': {
"key1": 3.7,"key2": 2.5
}
}]
const result = centers.map(res => Object.entries(res.datos).reduce((acc,[key,value]) => ({ ...acc,[key.replace('key','column')]: value
}),{}))
console.log(result)
您需要使用 Object.keys(res) 来获取数组中的所有键 cc 然后首先在 for 循环中使用动态变量名称来命名列(从 (column1) 开始,并从 cc 中的 0 和名称 cc[0] => key1
中的 1 开始命名键)
let result = centers.map(res => {
cc = Object.keys(res); // ['key1','key2','key3','key4','key5']
let columns : {};
for (let i = 0; i < cc.length; i++) {
// for i = 0 => columns['column1'] = res.datos[key0]
// for i = 0 => columns.columns1 = res.datos.key0
columns['column' + (i + 1)] = res.datos[`${cc[i]}`] ;
}
return columns ;
}
,
我终于能够解决了。我发布以防万一它可以帮助
centers = [
{ 'center': 'Center 1','datos': { "key1":4.67,"key2":3.56
}
},{ 'center': 'Center 2','datos': { "key1":0.34,"key2":5}
},{ 'center': 'Center 3','datos': { "key1":3.7,"key2":2.5}
}
]
var cc = ['key1','key2'];
for (let i = 0; i < cc.length; i++) {
centers.map(res => {
let nombreColumna = "column"+i;
let columns = {[nombreColumna]:res.datos[cc[i]]}
arrayOut.push (columns);
return arrayOut;
})
}
/*
arrayOut:
[
[
{ column0: 4.67 },{ column0: 0.34 },{ column0: 3.7 },{ column1: 3.56 },{ column1: 5 },{ column1: 2.5 }
]
]
´´´