У меня есть код

let letters = [
 {"ae": "a"},
 {"ac": "c"}
];

String.prototype.swapLetters = function(){ 
    return this.replace(/ae/g, 'a').replace(/ac/g, 'c');
}

var decLetter= new String(response[i].name).swapLetters();

Как я могу использовать свою функцию-прототип со значениями объекта JSON? JSON будет генерироваться динамически.

0
MMPL1 29 Окт 2019 в 17:59
1
Вы можете использовать JSON.stringify, вызвать свою функцию, а затем использовать JSON.parse, чтобы превратить ее обратно в объект. Это полностью зависит от того, что вы хотите сделать, ваш вопрос очень расплывчатый
 – 
Kobe
29 Окт 2019 в 18:01
Я просто хочу поменять местами буквы для строки. У меня есть ввод, когда я набираю ответ, он должен быть a. Когда я набираю ответ ae, он также должен быть a. Это похоже на перенос акцента для автозаполнения.
 – 
MMPL1
29 Окт 2019 в 18:05
1
Я не вижу здесь данных JSON. letters — это массив объектов. JSON — это текстовый формат.
 – 
Heretic Monkey
29 Окт 2019 в 18:24

1 ответ

Лучший ответ

Пройдите по массиву и примените функцию к каждому из них:

String.prototype.swapLetters = function() {
    let result = this;
    letters.forEach(pair => {
      const key = Object.keys(pair)[0];
      const value = pair[key];
      result = result.replace(key, value);
    });
    return result;
}

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

let letters = {
    "ae": "a",
    "ac": "c"
};

String.prototype.swapLetters = function() {
    return Object.keys(letters).reduce((result, replacer) => {
        return result.replace(replacer, letters[replacer]);
    }, this);
}
1
IceMetalPunk 29 Окт 2019 в 18:08
Спасибо! Это то, что я ищу!
 – 
MMPL1
29 Окт 2019 в 18:14