我不使用的数组如何更新?

时间:2016-11-01 22:44:55

标签: javascript arrays

这是我的功能:

function RemoveOutputKeys(array){
  var temp = array;
  for(var object in temp){
    delete temp[object]['statusCode']
    delete temp[object]['statusResponse']
  } 
  console.log(array)
  if(temp == array)
    console.log("how is this possible?!?!!?!?!")
  return temp
}

这是我提供的输入,

array = [{'statusCode':400},{'statusCode':200}]

temp更新有意义,但我不希望array更新。我该如何解决这个问题?

由于

2 个答案:

答案 0 :(得分:1)

使用 Array.prototype.filter()代替 for

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter

  

filter()方法创建一个新数组,其中包含通过所提供函数实现的测试的所有元素。

function RemoveOutputKeys(array) {
  return array.filter(function(myArray) {
      if (!myArray['statusCode'] && !myArray['statusResponse']) {
          return myArray;
      }
  });
}

var originalArray = [{'statusCode':400}, {'statusCode':200}, {'test': 'test'}];

var tempArray = RemoveOutputKeys(originalArray);

console.log(originalArray, tempArray);

https://jsfiddle.net/3kbypvcs/2/

答案 1 :(得分:0)

如果要创建新数组而不是别名/引用,请使用:

var newArray = oldArray.slice();