<script>
// 源数据 - 要处理的数据
let sourceData = [
{ name: "张三", age: 18 },
{ name: "李四", age: 28 },
{ name: "王五", age: 38 }
]
// 处理后的结果
/**
* let targetData = [
['张三', 18],
['李四', 28],
['王五', 38]
]
*/
function transData(sourceData) {
// 定义一个空数组 - 最后处理后返回的还是一个数组,return出来的
let newArr = []
//对源数据进行循环遍历
sourceData.forEach(item => {
//item 是遍历出来的每一条对象 => { name: "张三", age: 18 }
//用Object.values()方法 拿到每个对象的value值 - 组成一个新的数组
const arr = Object.values(item) // arr就是新组成的 => ['张三', 18]
// 将新的小数组 添加到 一个大数组中
newArr.push(arr)
})
return newArr
}
const res = transData(sourceData)
console.log(res);
</script>
最后控制台打印的结果
实现一个函数可以将源数据按照header做匹配产出二维数组
<script>
let sourceData = [
{name:"张三",age: 18, height:180},
{name: "李四",age: 28,height:160},
{name: "王五",age: 38,height:170}
]
/*
根据 header 中的字段 去sourceData中的每一项中去匹配
符合条件的项 对应的value取出来,放到一个数组中,然后再将这个数组添加到一个大数组中
header -> ['name','age']
targetData = [
['张三', 18],
['李四', 28],
['王五', 38]
]
header -> ['name','height']
targetData = [
['张三', 180],
['李四', 160],
['王五', 170]
]
*/
function tansData(souceData,header){
let newArr = []
// 循环遍历每个数组 - 拿到数组中的每个对象
souceData.forEach(item => {
// 定义一个arr数组 - 是大数组中的小数组
let arr = []
// 通过Object.keys() 拿到对象中的key 组成一个新数组
let keyArr = Object.keys(item)
// 再遍历这个key组成的新数组
keyArr.forEach(key => {
// 判断header中 有没有这个key, 有就将这个key所对应的value值添加到arr中
if(header.includes(key)) {
arr.push(item[key])
}
})
// 最后将处理之后的小数组 添加到 大数组中
newArr.push(arr)
})
return newArr
}
const test1 = tansData(sourceData,['name','age'])
const test2 = tansData(sourceData,['name','height'])
console.log(test1);
console.log(test2);
</script>
控制台打印结果