2013-03-20 3 views
4

как удалить каждый третий элемент из массива?javascript как удалить каждый третий элемент из массива

var TheArray = ['h', 'e', 'z', 'l', 'l', 'l', 'o'] 

Как заставить это сказать «привет» без создания нового массива?

+0

Просто, чтобы вы знали, что создает новый массив будет примерно в 20 раз быстрее, в этом случае, то есть 'newArray = []; for (i = 0; i <= TheArray.length; i + = 3) newArray.push (TheArray [i]) && newArray.push (TheArray [i + 1]); ' –

+0

jsfiddle: https: // jsfiddle. net/yexqr68z/1/ –

ответ

7

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

for (var i = 2; i <= TheArray.length; i += 2) 
    TheArray.splice(i, 1); 

Если вы хотите строку в конце концов, просто использовать TheArray.join("").

+0

Спасибо, что вы мне очень помогли! :) – Curiously

+0

@ user2033351 Добро пожаловать. Имейте в виду, что некоторые методы массива, такие как 'splice',' sort' и 'push', изменяют массив, а другие, например' slice', 'concat',' map' и 'filter', не работают. – MaxArt

0

Если вы хотите строку, не изменяйте массив.

var r = ''; 
for (var i=0; i<TheArray.length; i++) { 
    if (i%3!=2) r += TheArray[i]; 
} 
// now r is "hello" 
0

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

var arr = ['h', 'e', 'z', 'l', 'l', 'l', 'o']; 
for(var i = 2; i < arr.length; i+=2) 
    arr.splice(i, 1); 
console.log(arr); // outputs ['h','e','l','l','o'] 
Смежные вопросы