要求将数组对象按一定格式转换,key为c0、c1等,value如果是数字不变 不是数字变为1,同时每个对象第一位不用动
data1: [
{ id: 1, qqq: 'q', www: 'w' },
{ id: 2, qqq: 22, www: 's' },
{ id: 3, qqq: 33, www: 'x' },
]
//要求将数组对象按一定格式转换,key为c0、c1等,value如果是数字不变 不是数字变为1,同时每个对象第一位不用动
let newData = []
this.data1.forEach((element, ind) => {
let datas = {}
Object.prototype[Symbol.iterator] = function () {
const keys = Object.keys(this)
let index = 0
return {
next: () => {
return {
value: [keys[index], this[keys[index++]]], // 每次迭代的结果
done: index > keys.length, // 迭代结束标识 false停止迭代,true继续迭代
}
},
}
}
//keys和values为带index的数组,方便按顺序操作对象
let keys = Object.keys(element)
let values = Object.values(element)
for(let i = 0;i<keys.length;i++){
let cc = 'c'+i
if(i === 0){
datas[cc] = values[i]
}else{
datas[cc] = typeof(values[i])==='number'?values[i]:1
}
}
newData.push(datas)
})
console.log(newData)
先给对象添加iterator接口,方便遍历