猿问

这样的对象怎么变成数组或者指定的对象格式?

数据结构形如:

 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该怎么写? 非常感谢


慕少森
浏览 438回答 1
1回答

人到中年有点甜

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    }, [])}
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答