Есть ли способ в Angular преобразовать массив строк в модифицированный массив строк? - PullRequest
0 голосов
/ 07 апреля 2019

проблема

Я хочу взять массив строк: ["foo", "bar", "baz"] и преобразовать их в модифицированный массив ["hello foo apple", "hello bar apple", "hello baz apple"] внутри углового шаблона.

дополнительная информация

Используя этот массив, у меня уже есть служебная функция в контроллере, которая позволит мне sentence-ify массиву быть "hello foo apple, hello bar apple, and hello baz apple".Если бы массив имел разную длину, он бы учитывал длины и отображал их по-разному, например, [1,2] становится "1 and 2", или [1] становится "1", или '[1,2,3,4,5] 'становится "1, 2, 3, 4, and 5".

<div ng-if="array_foo">
    {{array_foo sentence-ify}}
</div>

Приведенный выше код даст мне:

<div>hello foo apple, hello bar apple, and hello baz apple</div>

Я знаю, что вы можете использовать ng-repeat, но, насколько я знаю, это не так'Фактически, он возвращает массив, скорее он возвращает HTML повторяющихся элементов.

Мне просто нужно преобразовать массив в модифицированный массив (карту), но я не могу найти документацию после поиска.Есть ли способ, которым я могу сделать это?Я чувствую, что это очень простая операция, поэтому я должен что-то упустить, когда я ищу ответ.

Ответы [ 2 ]

2 голосов
/ 07 апреля 2019

Может быть попробовать что-то вроде фильтра

<div ng-if="array_foo">
    {{array_foo | myFormat}}
</div>

var app = angular.module('myApp', []);
app.filter('myFormat', function() {
    return function(x) {
        if(!angular.isArray(x))return x;
        return x.map(function (item, index, arr) {
          if(index+1 === arr.length) return " and hello " + item + " apple";
          return "hello " + item + " apple";
        }).join(',');
    };
});
1 голос
/ 07 апреля 2019

Я думаю, вы пытаетесь сделать что-то вроде этого:

var originalArray = ["foo", "bar"];

originalArray = originalArray.map(function (item) {
  return "Hello " + item + " apple";
});

console.log(originalArray)

Для получения дополнительной информации см.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...