首页 > 解决方案 > 如果我将数组传递给 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]);
    }
  }

标签: javascriptarraysfunctionreference

解决方案


当你这样做时:

citiesNames = [];
citiesPos = [];

变量不再是对传入的原始数组的引用,现在它们是对这两个空数组的引用。

如果要清除原始数组,只需设置它们的长度:

citiesNames.length = 0;
citiesPos.length = 0;

推荐阅读