1. 实现一个函数将对象数组处理成二维数组
let sourceData = [
{name:"张三",age: 18}, {name: "李四",age: 28 }, {name: "王五",age: 38}
]
let targetData = [
['张三', 18],
['李四', 28],
['王五', 38]
]
参考结果:
思路:
1. 首先要想要遍历sourceData数组
2. 想想怎么才能拿到value值呢,当然可以用到Object.values() 结果会得到一个数组
3.然后再套一个数组是不是就是双层数组了呢?
<script>
// 源数据 - 要处理的数据
let sourceData = [
{ name: "张三", age: 18 },
{ name: "李四", age: 28 },
{ name: "王五", age: 38 }
]
function transData(sourceData) {
// 定义一个空数组 - 最后处理后返回的还是一个数组,return出来的
let newArr = []
//对源数据进行循环遍历
sourceData.forEach(item => {
//item 是遍历出来的每一条对象 => { name: "张三", age: 18 }
//用Object.values()方法 拿到每个对象的value值 - 组成一个新的数组
const arr = Object.values(item) // arr就是新组成的 => ['张三', 18]
console.log(22,arr)
// 将新的小数组 添加到 一个大数组中
newArr.push(arr)
})
return newArr
}
const res = transData(sourceData)
console.log(res);
</script>
2. 实现一个函数可以将源数据按照header做匹配产出二维数组
let sourceData = [
{name:"张三",age: 18, height:180},
{name: "李四",age: 28,height:160},
{name: "王五",age: 38,height:170}
]
function tansData(souceData,header){}
header -> ['name','age']
targetData = [
['张三', 18],
['李四', 28],
['王五', 38]
]
header -> ['name','height']
targetData = [
['张三', 180],
['李四', 160],
['王五', 170]
]
参考结果:
方案一:
思路:
1. 通过Object.keys() 拿到sourceData数组的key值
2.然后通过includes进行匹配
3.匹配上之后把value值放到一个数组中
4.最后再套一层数组
function tansData(souceData,header){
let newArr = []
souceData.forEach(item => {
let arr = []
// console.log(Object.keys(item))
let keyArr = Object.keys(item)
keyArr.forEach(key => {
if(header.includes(key)) {
// console.log(item[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)
方案二:
思路:
1. 遍历souceData
2.遍历header
3.通过三元表达式进行判断
function tansData(souceData,header){
let newArr = []
souceData.forEach(item => {
let arr = []
header.forEach(data => {
console.log(item[data]) // 拿到的是value值
item[data] ? arr.push(item[data]) : ""
})
newArr.push(arr)
})
return newArr
}
const test1 = tansData(sourceData,['name','age'])
const test2 = tansData(sourceData,['name','height'])
console.log(test1)
console.log(test2)
版权声明:本文为weixin_46413834原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。