Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >我的.slice()方法变异原始数组(TypeScript)

我的.slice()方法变异原始数组(TypeScript)
EN

Stack Overflow用户
提问于 2022-11-20 18:40:39
回答 1查看 29关注 0票数 0

这是我第一次用TypeScript编写slice()方法。我知道slice()方法应该返回一个数组的副本。下面是代码的一些片段

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class ChapterOne {
    
    // Gauss Jordan Elimination
    // Notes: Only solve system of linear equation with one solution
    static gaussJordanElim( linsys : number[][] ) {
        const numOfEquation = linsys.length
        const numOfUnknown = linsys[0].length - 1
        if (numOfUnknown > numOfEquation) return 'This System of Linear Equation either have no solution or have infinite solutions'
        
        // I slice it here.
        const input = linsys.slice()
        const length = input.length
        // pointer = i, row to operate = j, column to operate = k
        for (let i = 0; i < length; i += 1) {
            if (input[i][i] === 0) return 'Mathematical Error! Cannot divide by zero'
            for (let j = 0; j < length; j += 1) {
                if (i !== j) {
                    const ratio = input[j][i] / input[i][i]
                    for (let k = 0; k < length + 1; k += 1) {
                        input[j][k] = input[j][k] - ratio * input[i][k]
                    }
                }
            }
        }
        // I Checked it here
        console.log(input)
        console.log(linsys)

        const output = input.map((row, pointer) => row[length] / row[pointer])
        return output
    }
}

简而言之,我复制了原始数组,对复制的数组做了大量操作,并且不想改变原始数组,但是当我同时复制和原始数组console.log时,原始数组也会改变。对此有什么明确的解释吗?

主要目标是复制原始数组,更改复制的数组,并维护原始数组。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-20 18:55:40

这是因为.slice做一个浅拷贝,而不复制嵌套对象。由于您使用的是二维数组,这是预期的。

用途:const input = JSON.parse(JSON.stringify(linsys))

浅克隆不复制嵌套对象。因此,如果一个对象包含一个对象,那么您的.slice将保留对该对象原始副本的引用,而不是创建一个副本。因此,值会发生变化。

如果是浅薄的拷贝-

Heap).

  • Primitive数据类型中的
  • 对象将反映原始位置的更改,因为它们被作为引用存储在原始位置(因为它们直接存储在调用堆栈中(在执行上下文中)。

例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var a = [
    [1, 2],    // This still is referencing to the original reference 
    [5,7]
]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74513670

复制
相关文章
不会吧?不会还有人不会测安卓吧
本文属于OneTS安全团队成员Gal0nYu的原创文章,转载请声明出处!本文章仅用于学习交流使用,因利用此文信息而造成的任何直接或间接的后果及损失,均由使用者本人负责,OneTS安全团队及文章作者不为此承担任何责任。
OneTS安全团队
2025/02/07
410
不会吧?不会还有人不会测安卓吧
你不会还不会安装Maven吧
(一般会用阿里云的镜像库,但不知道是我电脑还是网络的原因,下载jar包总会出错,换了很多阿里云镜像都不管用,最后换了腾讯云的就好了,所有这里给出了三个镜像)
爱学习的小超人
2023/03/11
6260
你不会还不会安装Maven吧
【Linux】权限管理——专治不会设置权限而头疼
在Linux系统中,权限是指系统用来限制和控制用户对文件和目录的访问能力的一组规则。这些规则决定了用户可以对文件或目录执行哪些操作,比如读取(read)、写入(write)、执行(execute)等。Linux系统通过权限来维护系统的安全性和数据的完整性。
_小羊_
2024/10/16
1070
【Linux】权限管理——专治不会设置权限而头疼
C# 永远不会返回的方法真的不会返回
一般情况下,如果一个方法声明了返回值,但是实际上在编写代码的时候没有返回,那么这个时候会出现编译错误。
walterlv
2020/02/10
9490
不会吧,不会吧,不会还有人看了这篇文章还不精通JWT吧
JSON Web Token (JWT) is an open standard (RFC 7519) that defines a compact and self-contained way for securely transmitting information between parties as a JSON object. This information can be verified and trusted because it is digitally signed. JWTs can be signed using a secret (with the HMAC algorithm) or a public/private key pair using RSA or ECDSA.
上分如喝水
2021/08/16
2.9K0
不会吧,不会吧,不会还有人看了这篇文章还不精通JWT吧
不会吧?你这些Git命令都不会~
1、设置与帮助 1. git help <command> # 显示指定命令的help 2. git config --global user.name "your name" 3. git config --global user.email "your email" 2、修改与提交 1. git status # 查看工作区状态 2. git add <file> # 将指定文件修改提交到本地暂存区 3.
chengcheng222e
2021/11/04
4260
不会git的程序员,会不会被鄙视?
事先声明啊,这与公司技术栈无关,不要说有些公司只用 git 管理。对于公司而言,使用什么版本控制有一定的考虑或者历史原因。但如果你遇到一个不会 git 的新同事,会不会感觉 ta 以前的公司有点low ?
闰土大叔
2018/11/06
1.3K0
不会吧不会吧,还有开发不会Java填充PDF模板数据的,赶紧看看吧
根据业务需求,获取实际业务数据,借助itext库功能,将业务数据填充入提前制作好的PDF模板中
huofo
2022/03/18
1.9K0
不会吧不会吧,还有开发不会Java填充PDF模板数据的,赶紧看看吧
不会死亡的书
旧书重生为精致的艺术品 在这个电子时代,纸质书籍被大多数人遗忘在角落,但是却在艺术家手里进化! Brian Dettmer在这个演讲中列了好多他的作品。 他把旧书重新改造,进行雕刻,裁剪,将书籍内部自有的文字和图片,重新打造成具有立体感的艺术品, 不仅如此,他选择留下来的文字和图片,这种重组展示出了另一种含义,用这些书对更深刻的哲学进行诠释。 在去年的某段时间,这些图片在网络上特别火,原来是出自他之手, 不得不佩服这种创造力,尤其是这种精细的手工,想象力,创造力。 一看到这些作品,第一想到的是《哈
杨熹
2018/04/02
7770
不会死亡的书
不会吧,你还不会用RequestId看日志 ?
在日常的后端开发工作中,最常见的操作之一就是看日志排查问题,对于大项目一般使用类似ELK的技术栈统一搜集日志,小项目就直接把日志打印到日志文件。那不管对于大项目或者小项目,查看日志都需要通过某个关键字进行搜索,从而快速定位到异常日志的位置来进一步排查问题。
IT大咖说
2021/11/26
1.6K0
箭头函数不会修改this
function Person () { this.name = 'little bear', this.age = 18 setTimeout(()=>{ console.log(this ) }) } var a = new Person() setTimeout里的this代表new Person出来的对象 function Person () { this.name = 'little bear', this.age = 18 setTimeout(function(){
windseek
2018/06/14
6640
箭头函数不会修改this
function Person () { this.name = 'little bear', this.age = 18 setTimeout(()=>{ console.log(this ) }) } var a = new Person() setTimeout里的this代表new Person出来的对象 function Person () { this.name = 'little bear', this.age = 18 setTimeout(function(){
windseek
2018/06/21
6390
有一只狗名叫WAF,不会跳也不会叫......
本号提供的工具、教程、学习路线、精品文章均为原创或互联网收集,旨在提高网络安全技术水平为目的,只做技术研究,谨遵守国家相关法律法规,请勿用于违法用途,如有侵权请联系小编处理。
网络安全自修室
2022/05/16
9220
有一只狗名叫WAF,不会跳也不会叫......
不会吧不会吧,你不会还不知道这些提高JS代码质量的骚操作吧?
程序的健壮性是指程序在执行时,在局部发生错误的情况下,不影响整个系统的运行,而且我们能够很快的定位到发生错误的位置。我们通常使用以下几种方式来保证程序的健壮性。
AlbertYang
2020/09/08
1.2K0
不会吧不会吧,你不会还不知道这些提高JS代码质量的骚操作吧?
学不会的JVM
首先我们写的源文件叫.java文件,然后点击IDE的运行在硬盘会生成.class字节码文件,接着Java虚拟机从硬盘加载.class字节码文件,再者内部操作和解析成电脑能识别的机器码,最后CPU执行
晚上没宵夜
2020/03/10
3820
SaaS 公共责任:云不会永存,你的数据也不会
当我开启我的技术运营职业生涯(也就是现在的 DevOps),世界发生了翻天覆地的变化。那是在新千年到来之前,当时,世界上最大、最知名的软件即服务公司 Salesforce 还窝在旧金山的一间公寓里。
深度学习与Python
2022/03/23
4440
SaaS 公共责任:云不会永存,你的数据也不会
这年头还不会SpringBoot?
在说SpringBoot之前,我们得聊聊Spring,Spring是J2EE的轻量级代替品。无需开发重量级的JavaBean,Spring为企业级Java开发提供了一种相对简单的方法,通过依赖注入和面向切面编程,用简单的Java对象实现了JavaBean的功能。
程序员的时光001
2020/07/24
3890
这年头还不会SpringBoot?
测试管理你不会
1、也许你过往看过很多管理文章,也看过一些管理的书籍 。但都没过脑,没有去思考 。
IDO老徐
2022/12/29
2390
啥?不会Debug jdk源码
一个学弟问我,你觉得面试中问什么面试题的频率最高?我毫不犹豫的回答:“源码”,尤其是HasMap,我所经历的面试官几乎必问。朋友听后心一慌,自己还没看过。
大猫的Java笔记
2020/11/25
4730
啥?不会Debug  jdk源码
谁还不会单调栈
单调栈是满足单调性的栈,即在栈的基础上,维持栈内元素的单调性。典型题目如:有找某侧最近一个比其大(小)的值。
marsxingzhi
2023/07/13
2300

相似问题

简单-CCSM不会安装

30

统一不会加载ubuntu 14.04

10

在修改CCSM后恢复统一

10

TuxOnIce不会继续了

10

Xbmcbuntu安装不会继续

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文