为了账号安全,请及时绑定邮箱和手机立即绑定

怎么样通过一个方法 改变数组对象中指定的value 结构不固定

怎么样通过一个方法 改变数组对象中指定的value 结构不固定

郎朗坤 2018-10-02 10:22:19
let data = [    {        id: 1,        price1: 5,        price2: 4    }let data1 = [  {    id: 1,    price: {      price1: 6    }  }]let data2 = [  {    id: 1,    price: {      price1: {        price2: 7      }    }  }]// 通过一种方法 给指定的vlaue前面加一个¥符号 key值不固定test(data, 'price1,price2')test(data1, 'price.price1')test(data2, 'price.price1.pricew')function test (data, price) {}
查看完整描述

2 回答

?
MMMHUHU

TA贡献1834条经验 获得超8个赞

为什么会产生结构不固定的情况?一般出现这种情况是数据结构设计不够合理。

当然也可能是因为数据来源比较分散,这种情况下比较好的做法是为每种来源写一个适配器转换数据结构——当然,如果几种数组结构的变化非常有规律,也可以用一个适配器来解决。


查看完整回答
反对 回复 2018-10-09
?
蝴蝶刀刀

TA贡献1801条经验 获得超8个赞

let data = [

  {

    id: 1,

    price1: 5,

    price2: 4

  },

  {

    id: 2,

    price1: 5,

    price2: 4

  }

]


let data1 = [

  {

    id: 1,

    price: {

      price1: 6

    }

  },

  {

    id: 2,

    price: {

      price1: 6

    }

  }

]


let data2 = [

  {

    id: 1,

    price: {

      price1: {

        price2: 7

      }

    }

  },

  {

    id: 2,

    price: {

      price1: {

        price2: 7

      }

    }

  }

]


function test (data, price) {

  let keys = price.split(',').filter(key => key)

  keys.forEach(key => {

    let list = key.split('.').filter(key => key)

    let last = list.pop()

    data.forEach(item => {

      let tmpList = list.map(cur => cur)

      let cur

      let d = item

      while(cur = tmpList.shift()) {

        d = d[cur]

      }

      d[last] = '¥' + d[last]

    })

  })

}


test(data, 'price1,price2')

test(data1, 'price.price1')

test(data2, 'price.price1.price2')


console.log(data, data1, data2)


查看完整回答
反对 回复 2018-10-09
  • 2 回答
  • 0 关注
  • 808 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信