js 对象里面的对象调换顺序

遍历data里面的params,如果params的长度等于2,并且data.params[0]的expression为0,那就调换位置,其他的则不变

数据格式如下↓

const data = [
    {
        type: 0, 
        params: [
            {
                expression: "0", 
                value: "300"
            }
        ], 
        interest: "3"
    }, 
    {
        type: 1, 
        params: [
            {
                expression: "0",  //与下面的调换位置
                value: "600"
            }, 
            {
                expression: "1", 
                value: "300"
            }
        ], 
        interest: "6"
    }, 
    {
        type: 1, 
        params: [
            {
                expression: "0",  //与下面的调换位置
                value: "600"
            }, 
            {
                expression: "1", 
                value: "700"
            }
        ]
    }, 
    {
        type: 0, 
        params: [
            {
                expression: "1", 
                value: "700"
            }
        ]
    }
]

拿这一条来举例↓

const data = {
        type: 1, 
        params: [
            {
                expression: "0", 
                value: "600"
            }, 
            {
                expression: "1", 
                value: "300"
            }
        ], 
        interest: "6"
    }

期待结果↓

const data = {
        type: 1, 
        params: [
            {
                expression: "1", 
                value: "300"
            },
            {
                expression: "0", 
                value: "600"
            }
            
        ], 
        interest: "6"
    }

也就是调换下顺序

在这里感谢各位大哥大姐的解答,小弟感激不尽!

阅读 5.6k
4 个回答

用map 过滤应该就可以。

data.map(item => {
  if (item.params.length === 2 && item.params[0].expression === "0") {
    item.params = [
      item.params[1],
      item.params[0]
    ]
  }
   return item;
});
// 用forEach不生成新的变量
data.forEach(item=>{
  if (item.params.length === 2 && item.params[0].expression === '0')
    item.params.reverse() // reverse 直接反正原数组,不生成中间变量
})

console.log(data)

不考虑树结构

for(let n of arr){

    if(n.params.length==2&&n.params[0].expression=='0'){
      let temp=n.params[0];
      n.params[0]=n.params[1];
      n.params[1]=temp
    }
  }
新手上路,请多包涵
const changeOrder = data => data.forEach(
  ({ params }) => params[0].expression == 0 && params.reverse()
)
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题