Сравнение элементов в массиве

Рейтинг: 0Ответов: 1Опубликовано: 13.01.2015
window.onload=function(){
    var s = "T $ # d @ e f g &"; //исходная строка
    var ss = s.split(" "); //разделяю по символу в массив ss 
    var mas=[]; //новый массив для переноса после редактирования
    var k=0; //счетчик
    var a=['#','$','@','&']; //что нужно заменить,знаки пунктуации
    for (var i=0; i<length.ss;i++){// использую 2 массива
        for (var j=0; j<length.a;j++){
            if (ss[i]!=a[j]){ // если символ не совпадает с пунктуацией
                mas[k]=ss[i]; //записываем в массив
                k++;  /
            }}
    }
    alert(mas); // по моей логике должно выдать "Tdefg" но мне не выдает ничего.
}

Ответы

▲ 1Принят

У вас не работает, потому что вы перепутали местами свойство length, которое указывает на длину массива.

Нужно вот так: ss.length, a.length

Также замечу, что произойдет задублирование данных, потому что у вас 9 значений в первом массиве, и только 4 из них не подходят. Вот что выйдет:

T,T,T,T,$,$,$,#,#,#,d,d,d,d,@,@,@,e,e,e,e,f,f,f,f,g,g,g,g,&,&,&

Решение:

выбрасываем второй цикл, заменяем его на indexOf, получаем:

window.onload=function(){
    var s = "T $ # d @ e f g &"; //исходная строка
    var ss = s.split(" "); //разделяю по символу в массив ss 
    var mas=[]; //новый массив для переноса после редактирования

    var a=['#','$','@','&']; //что нужно заменить,знаки пунктуации
    for (var i=0; i<ss.length;i++){// использую 2 массива

        if(a.indexOf(ss[i]) < 0) {
            mas.push(ss[i]);
        }

    }
    alert(mas); 
}

Причем счетчик k не нужен абсолютно, ведь чтобы добавить значение в конец массива, в javascript существует метод push()

Задачу можно решить несколькими способами, вам нужно просто удалить символы из строки вместе с пробелами? Это можно сделать и с помощью регулярного выражения, пример:

var s = "T $ # d @ e f g &"; //исходная строка
var a='#$@& '; //что нужно заменить,знаки пунктуации
var result = ""; // конечный результат

result = s.replace(new RegExp(a.split("").join('|\\'), "g"), "");

alert(result.split(""));