применяя метод, который я создал для каждого элемента массива - PullRequest
0 голосов
/ 11 июня 2019

Я создал этот метод для чисел:

Number.prototype.UnitConversion = function (units){
var conversion;
switch (units){
    case "Metric":
        conversion = this/100;
        break;
    case "English":
        conversion = this/12;
        break;
}
return conversion;
}

Я хочу применить его для каждого элемента массива.

InnerR = [10,5,2];
InnerR.forEach(function (number){
    number.UnitConversion(unitType)
});

Тем не менее, делая так элементы внутри InnerRмассив остается неизменным.Любая помощь приветствуется.

Ответы [ 4 ]

0 голосов
/ 11 июня 2019

Внутри анонимной функции forEach я добавил параметр index и использовал его для замены текущего значения преобразованием.

InnerR.forEach(function (number, index){
    InnerR[index] = number.UnitConversion('English');
});
0 голосов
/ 11 июня 2019

Используйте map.Это вернет новый массив с соответствующими значениями. Если вы хотите использовать forEach, вам нужно удалить текущий элемент и обновить индекс новым значением.

Number.prototype.UnitConversion = function(units) {
  var conversion;
  switch (units) {
    case "Metric":
      conversion = this / 100;
      break;
    case "English":
      conversion = this / 12;
      break;
  }
  return conversion;
}

let inner = [10, 5, 2];
let modArray = inner.map(function(number) {
  return number.UnitConversion("Metric")
});
console.log(modArray)
0 голосов
/ 11 июня 2019

Вы возвращаете результат преобразования, но когда вы вызываете метод, вы игнорируете этот результат.Используйте map не forEach

Number.prototype.UnitConversion = function (units){
    var conversion;
    switch (units){
        case "Metric":
            conversion = this/100;
            break;
        case "English":
            conversion = this/12;
            break;
    }
    return conversion;
}

var InnerR = [10,5,2];
var convertedInnerR = InnerR.map(function (number){
    return number.UnitConversion("Metric");
});

console.log(convertedInnerR);
0 голосов
/ 11 июня 2019

Примерно так:

InnerR.forEach((number, index, arr) => arr[index] = number.UnitConversion(unitType));

Однако было бы лучше создать новый массив с новыми значениями, а не с прямыми манипуляциями:

const newArray = InnerR.map(number => number.UnitConversion(unitType));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...