Замена значения массива

83
22 февраля 2022, 10:40

Подскажите, пожалуйста, как можно реализовать замену числовых значений в массиве не затрагивая строковые значения на javascript? Пробовал регуляркой с replace не получается. Заранее спасибо!

с этого массива значения 
["160.0", "438.0", "200.0.0", "-80.0", "80.0", "180.0"]
подставить в этот
["M", "260.0", "438.0", "l", "167.0.0", "-80.0", "80.0", "H", "180.0", "Z"]
Answer 1

Если менять попросту по очереди будет как-то так :

const dontTouch = ['M', 'L', 'l', 'H', 'h', 'V', 'C', 'c', 'S', 'Q', 'q', 'T', 'A', 'Z', 'z'], 
  arrNumbers = ["160.0", "438.0", "200.0.0", "-80.0", "80.0", "180.0"], 
  arr = ["M", "260.0", "438.0", "l", "167.0.0", "-80.0", "80.0", "H", "180.0", "Z"], 
  replace = (a, r) => a.map(e => { 
    if (~dontTouch.indexOf(e)) return e 
 
    const v = r[0] 
    r.shift() 
    return v 
  }) 
 
 
console.log(replace(arr, arrNumbers))

ПС: Должно быть так ?

Answer 2

Насколько я понял, вам нужно оставить неизменными элементы, в которых используются буквы. Также порядок элементов не должен измениться. Вот вариант фукнции, модифицирующей второй переданный массив:

function replaceCoords(sourceArray, targetArray) {
  const digitsRegExp = /[\d-]/;
  let j = 0;
  targetArray.forEach((item, i) => {
    if (digitsRegExp.test(item[0])) {
      targetArray[i] = sourceArray[j];
      j++;
    }
  });
} 
READ ALSO
плавное выезжание блока с помощью CSS или JS

плавное выезжание блока с помощью CSS или JS

Задача следующая: поставить затемнение на экран при нажатии на кнопку и обратно убирать затемнение при повторном нажатии

78
Не сохраняется токен в LocalStorage

Не сохраняется токен в LocalStorage

Есть файл Token с запросом

100
splice удаляет первый элемент все время

splice удаляет первый элемент все время

Почему splice удаляет все время первый элемент массива?

71
Chrome console не выводит данные

Chrome console не выводит данные

Есть расширение, в нем есть такой кодЗахожу в консоль - пустота

183