Javascript 引用使用介绍(一)

前言

js 的引用类型有数组,对象,类等。
值类型有int,float,number,double,bool,string

引用类型如果使用=表示的是两个对象共用一块内存,某一个对象里面的值改变了都会影响另一个对象的值。如:
var a = [1,2],b=a; b[0] = 2; console.log(a) 

这时a也变成了[2,2]。有时候这种引用关系是我们需要的,而有时是不需要的。

值类型则不会存在这种问题。

正文

近来,翻译C++代码,实现了很多类似指针引用类型的方法。比如想在函数内部修改参数并返回就可以用到如下的方式了。
该功能类似于如C++ 某方法可以传入指针,并在方法内部修改该指针,在外部该指针的值就发生了变化。Js 也有引用关系一说,该怎么实现相同的功能呢。
如原始数组是var arr = [1,2,3,4,1]。和数组coArr=[2,3]比较,获取arr中除coArr之外的数组。
var arr = [1,2,3,4,1],coArr = [2,3],exArr =[];

//去除arr中包含coArr的集合存入exarr中并返回
function getExcludArr(arr,coarr,exarr) {
	var copyArr = coarr.concat([]);//copy一份值,可以修改copyArr中的值,不改变原始数组。
	arr.map((a,index)=>{
		var pos = copyArr.indexOf(a);
		if(pos >=0 ) {		
			copyArr.splice(pos,1);
		} else {
			exarr.push(arr[index]);
		}
	});
}

getExcludArr(arr,coArr,exArr);
console.log('exclude arr', exArr);

输出结果为:

这样就实现了方法内部修改exArr的值并返回的功能。


后续

var res = [];
function test(res){
  var arr = [1,2,3]; 
  //res = arr;
  arr.map((item)=>{tes.push(item)}); //不能使用res = arr,否则最后输出为[],还有其他方式或方法可以更方便的在方法内修改res的值而不改变内存吗?
}
console.log(res);

如有更好的方式,可留言交流!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值