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

发布于 2022-09-13 00:28:52 字数 1672 浏览 26 评论 0

遍历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"
    }

也就是调换下顺序

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

执着的年纪 2022-09-20 00:28:52

用map 过滤应该就可以。

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

console.log(data)
紫﹏色ふ单纯 2022-09-20 00:28:52

不考虑树结构

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
    }
  }
流星番茄 2022-09-20 00:28:52
const changeOrder = data => data.forEach(
  ({ params }) => params[0].expression == 0 && params.reverse()
)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文