如何仅调整数组的一部分,而其他部分保持不变?

Posted

技术标签:

【中文标题】如何仅调整数组的一部分,而其他部分保持不变?【英文标题】: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 的混合信号。数组只有方括号,对象是大括号。您需要修改后的对象、新对象、对象中修改后的数组还是对象内部的新数组? 【参考方案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)

【讨论】:

以上是关于如何仅调整数组的一部分,而其他部分保持不变?的主要内容,如果未能解决你的问题,请参考以下文章

Bigquery 仅更新部分页面路径

当放大浏览器导致一个 div 容器扩展时,如何调整其他 div 容器的长度以保持在同一底线?

CSS 网格布局 - 仅针对部分内容的水平和垂直滚动

如何在调整大小期间保持相同的场景部分?

调整浏览器大小时,如何使部分中的对象保持居中?

Lua之table(表)