Добавить строковые суффиксы строкового файла

У меня есть значения массива, к которым я хочу добавить несколько суффиксов:

var arr = ["folder1/1.jpg","folder2/2.png","foldern/some.jpg"];

Добавление префикса '_большой палец' должно привести к следующему:

newArr = ["folder1/1_thumb.jpg","folder2/2_thumb.png","foldern/some_thumb.jpg"];

Это мой код, но не очень хороший:

var arr = ["folder1/1.jpg", "folder2/2.png", "foldern/some.jpg"];
  var newArr = [];
  arr.forEach(image => {
    var onlyPath = path.dirname(image);
    var filename = path.basename(image).split('.');
    newArr.push(onlyPath + '/' + filename[0] + '_thumb' + '.' + filename[1]);
  });
  console.info(newArr);

Покажи нам, что ты пробовал до сих пор…

misorude 15.10.2018 12:23

Regex - это ключ, поделитесь своим кодом.

Marcia Ong 15.10.2018 12:28

если путь к имени файла содержит точку, ваш код работать не будет.

Slimane amiar 15.10.2018 12:44

Извините, я использовал var path = require('path') nodejs.

Tính Ngô Quang 15.10.2018 13:59
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
4
65
6
Перейти к ответу Данный вопрос помечен как решенный

Ответы 6

Ответ принят как подходящий

вы можете использовать Array.map

let arr = ["folder1/1.jpg","folder2/2.png","foldern/some.jpg"];
let newArr = arr.map(img => img.split('.').join('_thumb.'));
console.info(newArr)

извините, моя ошибка, я не видел есть другой суффикс, исправлю.

Pengcheng 15.10.2018 12:37

Этот отлично работает, если в вашем массиве есть разные расширения (например, .png, .jpeg и т. д.)

  1. Вызовите каждый элемент массива.
  2. Разделить текущий элемент относительно точки (".").
  3. Свяжите желаемую строку ("_thumb") между результатом массива для разделенного элемента.

var arr = ["folder1/1.jpg","folder2/2.png","foldern/some.jpg"];
    for (var i = 0; i < arr.length; i++) {
      var splitted_string = arr[i].split(".");
      arr[i] = splitted_string[0]+"_thumb."+splitted_string[1];
      console.info(arr[i]);
    }

@TinhNQ попробуйте это :)

Erlisar Vasquez 15.10.2018 12:40

попробуйте, работает ли он с этим 'var arr = ["folder1 / 1.1.jpg", "folder2 / image.2.png", "foldern / some.image‌ .jpg"];'

Slimane amiar 15.10.2018 12:46

Что ж, @InslemIT, это было бы просто. В этом случае используйте lastIndexOf ().

Erlisar Vasquez 15.10.2018 12:48

Он точно разделит строку в точке перед расширением

Erlisar Vasquez 15.10.2018 12:50

использовать этот:

  var arr = ["folder1/1.jpg","folder2/2.png","foldern/some.jpg"];
      var newArr = [];
      arr.forEach(filename => {
        var name = filename.split('.').slice(0, -1).join('.')+'_thumb.'+filename.split('.').pop();
        newArr.push(name);
        console.info('name ',name );
      });

попробуй это:

 arr.map(function(el) {
  return el.replace(/\./g,"_thumb.")
})

обрабатывать png тоже, вы так близко: p

ValLeNain 15.10.2018 12:33

Используйте расколоть(). Это просто. Уф;)

let arr = ["folder1/1.jpg","folder2/2.png","foldern/some.jpg"];
let newArr = arr.map(img => img.split('.')[0] + '_thumb.' + img.split('.')[1]);
console.info(newArr)

Приведенный ниже код может вам помочь. Он вставляет заданную строку ("_thumb") перед расширением ".xxx".

//function to run
function test()
    {
      var arr = ["folder1/1.jpg","folder2/2.png","foldern/some.jpg"];
      var newArr=[];

      for(i in arr)
      {
      //gets the index of "." sign to add the "_thumb" string before it
      var pos=arr[i].indexOf(".");
      var newVal=insert(arr[i], pos, "_thumb");
      newArr.push(newVal);

      }

    }

    //inserts the given string ("_thumb") between the array value
    function insert(str, index, value) {
        return str.substr(0, index) + value + str.substr(index);
    }

Другие вопросы по теме