2016-09-26 4 views
-5

я нашел много ответов о том, как удалить последнюю запятую строки яваскрипта и так, но я нигде не удалось найти решение следующей задачи:Как удалить последнюю запятую из яваскрипта массива

var columns = new Array("datum","viz1","viz2","gaz","aram_nappali",); 

Это мой массив, и я хочу удалить последнюю запятую, потому что они сгенерированы с помощью инструкций PHP if.

Я попытался следующие, но не имели успеха:

columns = columns.substring(1, s.length - 1); 

Anyone простое решение?

Заранее спасибо

+7

Почему вы не исправляете инструкцию PHP if, чтобы не добавлять дополнительную запятую? –

+0

Если элемент является последним в if/whatever, добавьте его без запятой –

+0

или не догадывайтесь о том, добавлять ли запятую или нет, и правильно использовать PHP при попытке создать список с разделителями-запятыми, используя 'implode' , –

ответ

0

Вы действительно должны исправить выход PHP, вы можете также сделать этот трюк, как простые массивы игнорируют запятые в конце

var columns = ["datum","viz1","viz2","gaz","aram_nappali",,,]; 
var test = new Array(columns.join()); 
console.log(test); 
+0

Опираясь на 'new Array()', как правило, это плохая идея, так как [не ведет себя предсказуемо] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array#Syntax). Бесконечно лучшее решение - решить проблему в скрипте PHP, который генерирует JS-код, так что он просто генерирует правильную JS. –

+0

Спасибо, это единственное решение для моей проблемы. – Tibor

+0

@Tibor это действительно не так - исправить ваш PHP, а не ваш JavaScript. –

0

Не используйте new Array(), он не делает то, что вы думаете, он делает (спасибо behaving differently depending on how many arguments you supply). JavaScript имеет массив буквальный, что вы должны использовать вместо этого (независимо от того, пишете ли вы JS вручную или создавшие в стадии конверсии):

// in JavaScript: 
var columns = ["datum","viz1","viz2","gaz","aram_nappali"]; 

И, если ваш JS генерируются через PHP, то решение здесь, чтобы убедиться, что вы используете PHP правильно, сделав его генерировать соответствующий исходный код JS:

// in PHP: 
$varlist = array("datum","viz1","viz2","gaz","aram_nappali"); 

... 

// use [implode] to convert your array to joined string: 
$jscode = 'var columns = "' . implode('","', $varlist) . '"];'; 

Если вы хотите версию строкового списка разделенных запятых (или «ничего, разделенный» список), вы используете implode, чтобы это произошло.

-3

Просто удалите последний элемент в массиве сразу после его создания:

columns.splice((columns.length -1), 1) 
0
var columns = ["datum","viz1","viz2","gaz","aram_nappali",]; 
var a = columns.toString(); 
//a will be "datum,viz1,viz2,gaz,aram_nappali" 
Смежные вопросы