2010-11-24 2 views
0

У меня есть динамически сгенерированный массив:Javascript добавить элемент к массиву по заданному индексу

myArr = ["val0a", "val1a", "val2a"... "val600a"] 

У меня возникают проблемы, присоединяя новые значения массива в массив в цикле. Мой массив должен выглядеть следующим образом после Append:

myArr = ["val0a", "val1a val1b", "val2a val2b"... "val600a"] 

Пожалуйста, обратите внимание, что новый массив и старая не имеют одинаковую длину.

Как я могу это сделать? Это должно быть что-то простое, но я не могу понять это.

+0

Я запутался - вы хотите добавить в массив (в заголовке вопроса), или добавить к элементу * в * массиве, на вашем примере – Matt 2010-11-24 16:51:51

+0

добавляемых к элемент в массиве. Мне, вероятно, нужно исправить свой заголовок – Mircea 2010-11-24 16:52:53

ответ

6

Вы можете написать функцию вдоль линий этого:

Array.prototype.appendStringToElementAtIndex = function(index, str) { 
    if(typeof this[index] === 'undefined' || typeof this[index] !== 'string') return false; 
    this[index] += ' ' + str; 
}; 


myArr = ["val0a", "val1a", "val2a"]; 
myArr.appendStringToElementAtIndex(1, "val1b"); 

console.log(myArr.join(', ')); //val0a, val1a val1b, val2a 
+0

Thanx Jacob, он работает! – Mircea 2010-11-24 17:15:41

0
myArr.push(myArr[myArr.length - 1].split(" ").push("val42").join(" ")); // even 
-1

конкатенировать к элементу это строка:

myArr[2] = myArr[2] += 'blah'; 

росчерк:

myArr[2] = 'foo'; 
0

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

myArr = ["val0a", "val1a", "val2a"... "val600a"]; 
indexToAppendTo = 2; 
val2 = "val2b" 
myArr[ indexToAppendTo ] += (" " + val2) ; 
Смежные вопросы