怎么转这样的格式[{77, 0}, {76, 0}, {68, 1}],怎么弄呢?

image.png

怎么转这样的格式,怎么弄呢
[{77, 0}, {76, 0}, {68, 1}]
lQLPJxbgswQjHOfNAZvNAxiwRZq0HHoPG0QDcTavE0BwAA_792_411.png

阅读 1.3k
2 个回答

写一个最简单的

function test(data){
  const filterData = data.filter(item=> typeof item === 'number')
  const result = []
  for(let index = 0; index < filterData.length; index+=2){
    result.push([filterData[index], filterData[index+1]])
  }
  return result
}
const sourceData = [{}, 77, 0, 76, 0, 75, 0, 74, 0, 73, 0, 72, 0, 71, 0, 70, 0, 69, 1, 68, 1]
test(sourceData)
// (10) [Array(2), Array(2), Array(2), Array(2), Array(2), Array(2), Array(2), Array(2), Array(2), Array(2)]
// 0: (2) [77, 0]
// 1: (2) [76, 0]
// 2: (2) [75, 0]
// 3: (2) [74, 0]
// 4: (2) [73, 0]
// 5: (2) [72, 0]
// 6: (2) [71, 0]
// 7: (2) [70, 0]
// 8: (2) [69, 1]
// 9: (2) [68, 1]
// length: 10

如果说第一项是包裹的外层那么可以稍微改写一下:

function test(data){
  const parcel = JSON.stringify(data.shift()).split('')
  const result = []
  for(let index = 0; index < data.length; index+=2){
    result.push(parcel[0] + data[index] +',' + data[index+1] + parcel[1])
  }
  return result
}
const sourceData = [{}, 77, 0, 76, 0, 75, 0, 74, 0, 73, 0, 72, 0, 71, 0, 70, 0, 69, 1, 68, 1]
test(sourceData)
// (10) ['{77,0}', '{76,0}', '{75,0}', '{74,0}', '{73,0}', '{72,0}', '{71,0}', '{70,0}', '{69,1}', '{68,1}']

最简单的就是循环(arr.length / 2)次,每次都截取出数组的前两个元素作为一个子数组放入最终的数组中。

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