Ответ 1
Извините за все ядро сообщества. Вы очень близки к своему решению, но немного сбиты с толку документацией. Все в порядке, позвольте мне пояснить!
В документации для angular.forEach вы увидите следующее утверждение:
Вызывает функцию итератора один раз для каждого элемента в коллекции obj, который может быть либо объектом, либо массивом. Функция итератора вызывается с помощью итератора (value, key, obj), где value - значение свойства объекта или элемента массива, ключ - это ключ свойства объекта или индекс элемента массива, а obj - сам obj. Указание контекста для функции необязательно.
И затем следующий пример:
var values = {name: 'misko', gender: 'male'};
var log = [];
angular.forEach(values, function(value, key) {
this.push(key + ': ' + value);
}, log);
expect(log).toEqual(['name: misko', 'gender: male']);
По сути, код выглядит следующим образом:
angular.forEach('имя списка/массив, который вы хотите пропустить через', 'функция обратного вызова, которая будет вызываться для каждого элемента списка')
Важная часть, которую вам не хватает, заключается в том, что упомянутый выше "обратный вызов..." может быть передан 3 переменным, которые вы затем можете использовать в своем обратном вызове. Ваш обратный вызов будет вызываться для каждого элемента в списке. Вот несколько объяснений этих трех переменных:
Значение: Значение i-го элемента/свойства в списке/массиве/объекте
Ключ: я - индекс, принадлежащий текущему элементу массива
Объект: сам объект (или массив/список)
Вот пример, который я собрал для вас, где я использую ключ для создания новой строки, показывающей индекс каждой буквы в $scope.сообщение. Надеюсь, это помогло!