woaibaoba

woaibaoba 查看完整档案

填写现居城市  |  填写毕业院校  |  填写所在公司/组织填写个人主网站
编辑
_ | |__ _ _ __ _ | '_ \| | | |/ _` | | |_) | |_| | (_| | |_.__/ \__,_|\__, | |___/ 个人简介什么都没有

个人动态

woaibaoba 提出了问题 · 3月4日

js 对奇怪的数组格式用冒号为切割进行改造为新对象

原格式↓

const data = [['香蕉:123', '黄瓜:123'], ['梨子:321']]

理想格式↓

const data1 = [{ name: '香蕉', id: '123' },
               { name: '黄瓜', id: '123' },
               { name: '梨子', id: '321' }]

如上所示,用冒号为分割符号,左边为name,右边为id

请教各位大神该如何操作,小弟在这里先谢谢各位大神的解答了,感激不尽!

关注 4 回答 4

woaibaoba 提出了问题 · 3月3日

js for循环以逗号拆分为新数组

原数据格式↓

const data = [{ name: 'apple', cut: 'a,b,c' }, { name: 'trigger', cut: 'a,g' }]

期望数据格式↓

const data1 = [{ name: 'apple', final: 'a' },
               { name: 'apple', final: 'b' },
               { name: 'apple', final: 'c' },
               { name: 'trigger', final: 'a' },
               { name: 'trigger', final: 'g' }]

在原数据格式data中的cut字段,用逗号来拆分为新字段final,name不变

请教各位大神该如何操作,小弟在这里先谢谢各位大神的解答了,感激不尽!

关注 4 回答 4

woaibaoba 赞了回答 · 2月2日

解决js 树形结构根据条件push新数组

function getIdArr(arr) {
  const result = []
  function getId(arr) {
    return arr.forEach(item => {
      if (item.isOpen) {
        result.push(item.id)
      }
      if (item.children) {
        getId(item.children)
      }
    })
  }
  getId(arr)
  return result
}

关注 3 回答 3

woaibaoba 赞了回答 · 2月2日

解决js 树形结构根据条件push新数组

关注 3 回答 3

woaibaoba 提出了问题 · 2月2日

解决js 树形结构根据条件push新数组

数据结构↓

const data = [{
        name: '水果大全',
        id: '111',      
        isOpen: true            //把111 push进newData
        children: [{
          name: '浆果类',
          id: '112',
          isOpen: true     //把112 push进newData
          children: [{
            name: '草莓',
            id: '113',
            isOpen: true      //把113 push进newData
          }, {
            name: '桑椹',
            id: '114',
            isOpen: true
          }, {
            name: '黑莓',
            id: '115',
            isOpen: false
          }]
        }, {
          name: '柑橘类',
          id: '116',
          isOpen: true
          children: [{
            name: '橘子',
            id: '117',
            isOpen: true
          }, {
            name: '橙子',
            id: '118',
            isOpen: false
          }]
        }]
      }, {
        name: '奥特曼大全',
        id: '119',
        isOpen: true
        children: [{
          name: '昭和类',
          id: '120',
          isOpen: true
          children: [{
            name: '杰克',
            id: '121',
            isOpen: true
          }, {
            name: '泰罗',
            id: '122',
            isOpen: false
          }, {
            name: '艾斯',
            id: '123',
            isOpen: true
          }]
        }, {
          name: '平成类',
          id: '124',
          isOpen: false
          children: [{
            name: '迪迦',
            id: '125',
            isOpen: false
          }, {
            name: '盖亚',
            id: '126',
            isOpen: false
          }]
        }]
      }]

理想效果↓

const newData = [111, 112, 113, 114, 116, 117, 119, 120, 121, 123]

每一个层级都有isOpen这个字段,遍历所有层级,isOpen为true的话就把同对象里的id PUSH进newData里面

我该怎么操作呢,感谢各位大神大哥的指导,可能对你们来说很简单,但我对树形结构得操作一窍不通,先感谢你们的回答,小弟感激不尽,还请轻喷!

关注 3 回答 3

woaibaoba 提出了问题 · 2月1日

js for循环push新数组的key值相同问题.

const data = [{ a: '123', b: 'qwe', c: 'abc' },
              { a: '123', b: 'nwe', c: 'bac' },
              { a: '123', b: 'abr', c: 'bnm' },
              { a: '333', b: 'hhh', c: 'rrr' },
              { a: '333', b: 'vvv', c: 'rrr' },
              { a: '444', b: 'yyy', c: 'eee' }]

现在我需要的效果是,a对应新data的name,b对应新data的age,c对应新data的food,关键是如果有重复的a值就在多出的第一个加上'(1)',重复第二个就加'(2)',以此类推,如果没有重复则不动

理想效果↓

         const data = [{ name: '123', age: 'qwe', food: 'abc' },
                      { name: '123(1)', age: 'nwe', food: 'bac' },
                      { name: '123(2)', age: 'abr', food: 'bnm' },
                      { name: '333(1)', age: 'hhh', food: 'rrr' },
                      { name: '333(2)', age: 'vvv', food: 'rrr' },
                      { name: '444', age: 'yyy', food: 'eee' }]

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

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

关注 3 回答 3

woaibaoba 赞了回答 · 2月1日

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

// => [{"苹果":["123","111"],"香蕉":["111"],"梨子":["112"]}
const result = data.reduce(function (gather, item) {  
  return gather[item.name] = item.base.split(','), gather;
}, {})

关注 3 回答 3

woaibaoba 赞了回答 · 2月1日

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

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);

关注 3 回答 3

woaibaoba 提出了问题 · 2月1日

解决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值

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

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

关注 3 回答 3

woaibaoba 赞了回答 · 1月29日

解决js 如何把[ ]转换 为 { }

我咋没看出前后啥区别

关注 4 回答 3

认证与成就

  • 获得 4 次点赞
  • 获得 12 枚徽章 获得 0 枚金徽章, 获得 1 枚银徽章, 获得 11 枚铜徽章

擅长技能
编辑

(゚∀゚ )
暂时没有

开源项目 & 著作
编辑

(゚∀゚ )
暂时没有

注册于 2020-03-12
个人主页被 1.2k 人浏览