jsonuri icon indicating copy to clipboard operation
jsonuri copied to clipboard

对深层数据执行 mv 操作后,from 对象没有被移除

Open jaryway opened this issue 4 years ago • 3 comments

// jsonuri.set(vm.data, "batters/batter/length", 1);
var dta;
jsonuri.set(
  [
    {
      name: "a",
      // 0/children
      children: [
        // 0/children/0
        { name: "a-0" },
        // 0/children/1
        {
          name: "a-1",
          // 0/children/1/children
          children: [
            // 0/children/1/children/0
            { name: "a-1-0" },
            // 0/children/1/children/1
            { name: "a-1-1" },
            { name: "a-1-2" },
            { name: "a-1-3" },
          ],
        },
        // 0/children/2
        {
          name: "a-2",
          // 0/children/2/children
          children: [
            // 0/children/2/children/0
            { name: "a-2-0" },
            // 0/children/2/children/1
            {
              name: "a-2-1",
              // 0/children/2/children/1/children
              children: [
                { name: "a-2-1-0" },
                // 0/children/2/children/1/children/1
                { name: "a-2-1-1" },
                { name: "a-2-1-2" },
                { name: "a-2-1-3" },
              ],
            },
            { name: "a-2-2" },
            { name: "a-2-3" },
          ],
        },
      ],
    },
  ],
  "0/name",
  "aaaaa"
);
var data = [
  {
    name: "a",
    // 0/children
    children: [
      // 0/children/0
      { name: "a-0" },
      // 0/children/1
      {
        name: "a-1",
        // 0/children/1/children
        children: [
          // 0/children/1/children/0
          { name: "a-1-0" },
          // 0/children/1/children/1
          { name: "a-1-1" },
          // 0/children/1/children/2
          { name: "a-1-2" },
          // 0/children/1/children/3
          { name: "a-1-3" },
        ],
      },
      // 0/children/2
      {
        name: "a-2",
        // 0/children/2/children
        children: [
          // 0/children/2/children/0
          { name: "a-2-0" },
          // 0/children/2/children/1
          {
            name: "a-2-1",
            // 0/children/2/children/1/children
            children: [
              { name: "a-2-1-0" },
              // 0/children/2/children/1/children/1
              { name: "a-2-1-1" },
              { name: "a-2-1-2" },
              { name: "a-2-1-3" },
            ],
          },
          { name: "a-2-2" },
          { name: "a-2-3" },
        ],
      },
    ],
  },
];
// 把 a-2-1-1 移到 0/children/0 前面;

// 期望:a-2-1-1 移到 0/children/0 前面,并且从 0/children/2/children/1/children/1 移除
// 实际:a-2-1-1 移到 0/children/0 前面,但未从 0/children/2/children/1/children/1 移除

jsonuri.mv(data, "0/children/2/children/1/children/1", "0/children/0", "before");
console.log(data);

jaryway avatar Feb 01 '21 10:02 jaryway

@haozi

jaryway avatar Feb 01 '21 10:02 jaryway

看了源码,只对上一层做了处理,深层原数据就没有进行rm

newbeea avatar Jul 14 '21 02:07 newbeea

看这个逻辑应该只是写了同层级移动的逻辑,不同层级往前移动,先进行移动后进行删除就有问题了

WilliamALiang avatar Jan 27 '22 11:01 WilliamALiang