搜索
javascript - 这样的对象怎么变成数组或者指定的对象格式?
phpcn_u1582
phpcn_u1582 2017-06-14 10:54:11
[JavaScript讨论组]

数据结构形如:

 var result={
    "2":"3",
    "3":{
        "4":true,
        "5":true
    },
    "8":"16",
    "9":{
        "19":false,
        "20":true,
        "21":false,
        "22":false
    }
  }

里面每一项都是字符串,我想变成这样的格式:
[2,3;3,4,5;8,16;9,20] 或者其他格式也可,只要是这种结构就可以

注:有多个参数且属性为true才能获取

使用原生JS该怎么写? 非常感谢

phpcn_u1582
phpcn_u1582

全部回复(3)
伊谢尔伦

供参考

function getArr (data) {
  function compare (a, b) {
    return Number(a) - Number(b)
  }

  return Object.keys(data)
    .filter(k => data[k] !== false)
    .sort(compare)
    .reduce((arr, k) => {
      arr.push(Number(k))
      var value = result[k]
 
      if (typeof value === 'string') { arr.push(Number(value)) }
      else if (typeof value === 'object' && value !== null) {
        arr = arr.concat(Object.keys(value).filter(k => value[k]).sort(compare).map(k => Number(k)))
      }
      return arr
    }, [])
}
曾经蜡笔没有小新

https://jsfiddle.net/hsfzxjy/...

function transform (data) {
    let result = []
    Object.keys(data)
        .forEach(key => {
            let values, value = data[key]
            if (typeof value === 'object')
                values = Object.keys(value).filter(k => value[k])
            else
                values = [value]
            if (values.length)
                result.push([key].concat(values))
        })
    return result
}
黄舟
JSON.stringify(result)
    .replace(/"/g, '')
    .replace(/}/g, ',}')
    .replace(/\d+:false,/g, '')
    .replace(/:true,/g, ':')
    .replace(/{|}/g, '')
    .replace(/:,/g, ',')
    .replace(/,$/, '')
    .split(',')

// [ '2:3', '3:4:5', '8:16', '9:20' ]

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号