0

Can you please explain how to worship JavaScript gods and work around this one.

var array = ['old'];
    
function manageArray(targetArray) {
  targetArray = ['new'];
}

manageArray(array);
alert(array);

The reason for this is to create a pattern that will have filter logic and instead of declaring explicit methods for each array have one universal to rule over all.

Desired logic

var numbers = ['1', '2']
var words = ['room', 'car']
var color = ['red', 'blue']

function manageArray(targetArray, value) {
  targetArray = targetArray.filter(existingValue, () => {
    return existingValue != value
  })
}

manageArray(words, 'car');
alert(words);
volna
  • 2,452
  • 4
  • 25
  • 61

2 Answers2

1

You'll be able to access the array if you have your function return it:

var array = ['old'];
    
function manageArray(targetArray) {
  targetArray = ['new'];
  return targetArray
}

array = manageArray(array);
alert(array);
jeremye
  • 1,368
  • 9
  • 19
1

From what I understand, you want to pass your variable by reference. It is sad that Javascript pass array as value. There are a few ugly workaround.

var array = {v: ['old'] };

function manageArray(targetArray) {
  targetArray.v = ['new'];
}

manageArray(array);

or

var array = ['old'];

function manageArray(targetArray) {
    return ['new'];
}

array = manageArray(array);

For further reading:

Community
  • 1
  • 1
invisal
  • 11,075
  • 4
  • 33
  • 54