【问题标题】:How to adjust only part of an array, but other parts keep the same?如何仅调整数组的一部分,而其他部分保持不变?
【发布时间】:2022-01-08 01:45:37
【问题描述】:

这是我的数组

    export const someList = {
      something1: 'some string 1',
      someArr: [
        {
          item: 'item 1',
          },
        },
        {
          item: 'item 2',
          },
        },
        {
          item: 'item 3',
          },
        ],
     something2: {
        some: 'some string 2'
      },
    };

好的,所以我想要实现的是构造一个如下所示的新数组:

export const newList = {
  something1: 'some string 1',
    someArr: [
            {
              item: 'item 1',
              },
            },
            {
              item: 'item 2',
              },
            ],
         something2: {
            some: 'some string 2'
          },
        };

所以一切都保持不变,除了 newList 只从 someArr 获取前两项。

我已经尝试过了,它可以正常工作,但我不知道如何将“外部”部分保留在新数组(something1 和 something2)中。

const newList = someList.someArr.slice(0, 2)

如何构造一个新数组,保留我想要的,但仍然从更深的嵌套数组中分割项目?

谢谢。

【问题讨论】:

  • 您需要一个新数组还是一个全新的对象?您正在发送带有问题和 cmets 的混合信号。数组只有方括号,对象是大括号。您需要修改后的对象、新对象、对象中修改后的数组还是对象内部的新数组?

标签: javascript html arrays


【解决方案1】:

好的,在 cmets 之后我重新阅读了问题,我认为您正在尝试制作一个新的 OBJECT 而不是一个新的 ARRAY (花括号是一个对象)。

所以用你的代码做一个 OBJECT 深拷贝,然后改变里面的数组,它看起来像:

export const someList = {
  something1: 'some string 1',
  someArr: [
    {
      item: 'item 1',
      },
    },
    {
      item: 'item 2',
      },
    },
    {
      item: 'item 3',
      },
    ],
 something2: {
    some: 'some string 2'
  },
};
let newList=JSON.parse(JSON.stringify(someList));
newList.someArr=newList.someArr.slice(0,2);

【讨论】:

  • 这有什么帮助?请再次查看我的问题。
  • 我不想改变数组,我想创建一个新的。
【解决方案2】:

Event_Horizo​​n 的回答是正确的。

另一种创建新对象的方法:

const someList = {
      something1: 'some string 1',
      someArr: [
        {
          item: 'item 1',
        },
        {
          item: 'item 2',
        },
        {
          item: 'item 3'
        }
     ],
     something2: {
        some: 'some string 2'
     },
};

let newList={...someList,someArr:someList.someArr.slice(0,2)}
    
console.log(newList)

【讨论】:

    猜你喜欢
    • 2015-08-10
    • 2021-11-24
    • 2020-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-16
    相关资源
    最近更新 更多