2013-04-12 2 views
1

Я получаю смешанные результаты с помощью метода сплайсинга в JS на следующем примере:Проблема с JavaScript сращивания() метод

var test = function(x){ 
    var f = x.toString().length; 
    var bb = []; 
    for (i=0;i<f;i++){bb.push('a');} 
    console.log(bb); 
    for (i=bb.length; i>-1; i=i-3){bb.splice(Number((i-2)),1,'b');} 
    console.log(bb);  
};    
test (412289847863); 

Когда длина входного числа равно 4, 7, 10, 13 и т. д. последний элемент «bb» превращается в «b», и я не понимаю, почему. Как я вижу, он всегда должен быть «а». Почему не так?

+0

Что должна выполнять эта функция? Похоже, вы делаете там много лишних вещей. – Christoph

+0

Я довольно новичок в этом, поэтому, я думаю, вы правы. Массив «bb» служил бы своего рода прототипом. Затем я могу заменить «a» и «b» на определенные значения из двух других массивов. Например, «b» может иметь значение из любого из двух массивов, тогда как a может иметь значение только из одного из них. Idk, если это имеет смысл. – Ciprianis

+0

Можете ли вы объяснить, что именно вы хотите с помощью этой функции? Имеет массив определенной длины и заменяет каждый ключ 'n'th другим значением? – Christoph

ответ

0

Согласно вашим словам, вы можете попробовать этот код. Вам нужен только один цикл, и он должен избегать сращивания, поскольку он очень дорогостоящий и не нужен, если вы хотите заменить только один элемент за раз.

function test(a){ 
    var l = a.toString().length; 
    var bb = []; 
    for (var i = l;i>0;i-=1){ 
     bb[i-1] = ((l-i+2)%3!=0)?"a":"b"; 
    } 
    console.log(bb); 
} 

test(1343332); 
+0

Работает как очарование. Большое спасибо. – Ciprianis

 Смежные вопросы

  • Нет связанных вопросов^_^