У меня есть значения массива, к которым я хочу добавить несколько суффиксов:
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);
Regex - это ключ, поделитесь своим кодом.
если путь к имени файла содержит точку, ваш код работать не будет.
Извините, я использовал var path = require('path') nodejs.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


вы можете использовать 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)извините, моя ошибка, я не видел есть другой суффикс, исправлю.
Этот отлично работает, если в вашем массиве есть разные расширения (например, .png, .jpeg и т. д.)
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 попробуйте это :)
попробуйте, работает ли он с этим 'var arr = ["folder1 / 1.1.jpg", "folder2 / image.2.png", "foldern / some.image .jpg"];'
Что ж, @InslemIT, это было бы просто. В этом случае используйте lastIndexOf ().
Он точно разделит строку в точке перед расширением
использовать этот:
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
Используйте расколоть(). Это просто. Уф;)
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);
}
Покажи нам, что ты пробовал до сих пор…