JS 递归实现一个函数

已知:

var data = [
    {
        id: 0,
        title: 'IT'
    },
    {
        id: 1,
        title: 'GG'
    }
]

var data2 = [
    [
        {
            id: '1',
            title: '1111'
        },
        {
            id: '2',
            title: '22222'
        }
    ],
    [
        {
            id: '3',
            title: '33333'
        },
        {
            id: '4',
            title: '4444'
        }
    ]
]

怎么样实现一个 dealDate 函数,能够让data和data2变成:

var data = [
    {
        id: 0,
        title: 'IT',
        value: 0,
        text: 'IT'
    },
    {
        id: 1,
        title: 'GG',
        value: 1,
        text: 'GG'
    }
]

var data2 = [
    [
        {
            id: '1',
            title: '1111',
            value: 1,
            text: '11111'
        },
        {
            id: '2',
            title: '22222',
            value: 2,
            text: '22222'
        }
    ],
    [
        {
            id: '3',
            title: '33333',
            value: 3,
            text: '333333'
        },
        {
            id: '4',
            title: '4444',
            value: 4,
            text: '444444'
        }
    ]
]

就是每一个json的idtitle变成 valuetext

阅读 2.9k
2 个回答
var dealData = function (data) {
    for (var i = 0, len = data.length; i < len; i++) {
        if ('[object Array]' === Object.prototype.toString.call(data[i])) {
            dealData(data[i])
        } else {
            data[i].value = data[i].id
            data[i].text  = data[i].title
        }
    }
}
dealData(data2)

console.log(data2)
// 没做格式校验
for(var x in data){
        data[x].value = data[x].id;
        data[x].text  = data[x].title;
    }

不知道你是否需要这样的方法

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题