js for循环根据条件数据格式改造.

数据结构↓

let data = [{ name: '苹果', type: 0, base: '123,111'},
            { name: '香蕉', type: 0, base: '111' },
            { name: '梨子', type: 1, base: '112' }]

需要效果/理想效果 ↓

let newData =  '苹果': ['123', '111'] ,
               '香蕉': ['111'] 

image
可能newData得格式不太对,但这图就是我需要的数据结构的正确格式了

条件为当type等于0的时候,base里面以逗号为间隔生成一个数组,name为这个数组的key值

我该怎么操作才能达到效果呢..

感谢各位大神大哥的指导,先感谢你们的回答,小弟感激不尽,还请轻喷!

阅读 1.9k
3 个回答

不知道你 type === 1 时想怎么处理,根据你现有的描述,应该是想达到如下效果把:

const result = [
  { name: '苹果', type: 0, base: '123,111' },
  { name: '香蕉', type: 0, base: '111' },
  { name: '梨子', type: 1, base: '112' }
].reduce((obj, item) => {
  if (item.type === 0 && typeof item.base === 'string') {
    obj[item.name] = item.base.split(',')
  }

  return obj
}, {})

console.log(result)
// {
//   "苹果": ["123", "111"],
//   "香蕉": ["111"]
// }
// => [{"苹果":["123","111"],"香蕉":["111"],"梨子":["112"]}
const result = data.reduce(function (gather, item) {  
  return gather[item.name] = item.base.split(','), gather;
}, {})
let data = [
    { name: '苹果', type: 0, base: '123,111'},
    { name: '香蕉', type: 0, base: '111' },
    { name: '梨子', type: 1, base: '112' }
]
let newData = {};
data.forEach((item) => {
    newData[item.name] = item.base.split(',')
})
console.log(newData);
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题