telArray[i].includes is not a function

Есть массив из json файла с номерами телефонов (+7.. и 8..), нужно сделать так, чтобы все номера телефонов отображались с 8, а не +7.. и обязательно через .includes()

var fs = require("fs");
var contents = fs.readFileSync("telep.json");
var jsonContent = JSON.parse(contents);
let telArray = [],
cnt = 0;


for (let i = 0; i < jsonContent.length; i++) {
    if(jsonContent[i].TEL == undefined || jsonContent[i].TEL == '' ) continue;
    telArray.push(jsonContent[i].TEL); 
}

for (let i = 0; i < telArray.length; ++i) {
    if(telArray[i].includes('+7')) {some code}
}

возвращает telArray[i].includes is not a function

почему? и как лучше сделать проверку массива на какую-то часть строки?


Ответы (1 шт):

Автор решения: entithat

Если надо заменить +цифра на 8, то можно так. Не использую includes(), потому что нам надо проверить не только +7, но и +другие цифры. Поэтому вместо include() вполне логично использовать replace().

// Ваша часть для файла, у нас же сразу готовый массив будет
// const fs = require("fs");
// const contents = fs.readFileSync("telep.json");
// const jsonContent = JSON.parse(contents);

const telArray = [];
const jsonContent = [{TEL: '+996700575270'}, {TEL: ''}, {TEl: 89244411111}, {TEL: '+79244222222'}];

for (let i = 0; i < jsonContent.length; i++) {
  if (jsonContent[i].TEL == undefined || jsonContent[i].TEL == '') {
    continue;
  }
  telArray.push(String(jsonContent[i].TEL)); // Записываем сразу как строку
}

for (let i = 0; i < telArray.length; ++i) {
  telArray[i] = telArray[i].replace(/^\+\d/, '8')
}

console.log(telArray);

P.S. Если надо заменить код международного формата, то надо так же проверять другие форматы, кроме как одной цифры.

→ Ссылка