javascript - 如果我将数组传递给 JS 函数,它似乎不会修改该数组。不应该通过引用传递吗?
问题描述
我的类中的这个 Javascript 函数似乎没有修改它通过引用传递给它的数组:
this.filterEqualCities(this.birthCitiesNames, this.birthCitiesPositions);
filterEqualCities: function(citiesNames, citiesPos) {
var tempNamesArray = [];
var tempPosArray = [];
for(var i=0; i<citiesNames.length; i++) {
var name = citiesNames[i];
name = name.split(',')[0];
if(tempNamesArray.indexOf(name) == -1) {
tempNamesArray.push(name);
tempPosArray.push(citiesPos[i]);
}
}
citiesNames = [];
citiesPos = [];
for(var i=0; i<tempNamesArray.length; i++) {
citiesNames.push(tempNamesArray[i]);
citiesPos.push(tempPosArray[i]);
}
}
解决方案
当你这样做时:
citiesNames = [];
citiesPos = [];
变量不再是对传入的原始数组的引用,现在它们是对这两个空数组的引用。
如果要清除原始数组,只需设置它们的长度:
citiesNames.length = 0;
citiesPos.length = 0;
推荐阅读
- android - 应用程序在 android studio 模拟器上运行但不在真实设备上:(
- python - 通过执行依赖于多个索引的操作来创建列表 - python
- highcharts - 根据不规则数据绘制 Highcharts 热图
- meteor - 如何从命令行调用 Meteor 方法
- spring - Spring OAuth2 在成功验证时重定向到原始 URL
- jquery - 使用 jquery 每 5 秒倒计时
- python - 单从多拆分
- elasticsearch - Elasticsearch 排除对字段值的最高命中
- java - 从数据库 Spring Boot 获取详细信息,异常错误
- swift - 使用 GKStates 和 PhysicsBody 操作的最佳实践