@Netnamee

Как получать по 5 элементов из массива?

Есть массив в нем 23 элемента может больше, может меньше
Как получать по 5 элементов и выполнять действие
То-есть получил 5 элементов вывел сообщение получено
И так до конца массива.
  • Вопрос задан
  • 1693 просмотра
Пригласить эксперта
Ответы на вопрос 5
@kttotto
пофиг на чем писать
C#
1. list.Skip(n).Take(5)
2.
var slice = new ArraySegment<string>(list, n, n + 5)

3. Можете еще использовать очередь
var queue = Queue<string>() { ... };
var el1 = queue.Dequeue()
var el2 = queue.Dequeue()
var el3 = queue.Dequeue()
var el4 = queue.Dequeue()
var el5 = queue.Dequeue()
Ответ написан
@bkosun
Используйте функцию array_chunk, чтобы разбить существующий массив на несколько других массивов размером в N элементов.
Ответ написан
Комментировать
Stalker_RED
@Stalker_RED
php.net/manual/ru/function.array-chunk.php
$chunks = array_chunk($array, 5);
foreach($chunks as $chunk) {
  print_r($chunk);
}
Ответ написан
Комментировать
Смотреть остаток от деления инкремента на 5. Если 0, то выводить ваше сообщение.
Ответ написан
Комментировать
@Chipsetone
.NET Backend
Короткий ответ, как всегда, легко ищется на просторах интернета.

А мой немного фанатичный монстр на C# в 2 ночи выглядит так =)
[TestClass]
    public class UnitTest1
    {
        [TestMethod]
        public void TestMethod1()
        {
            var victimArray = new string[] {
                "1", "3", "2", "1", "23",
                "44", "32", "2", "10", "0",
                "17", "-1", "34", "79", };
            var expectedIndexesWithValues = new List<string>() {
                {"23"}, // "пятый" элемент
                {"0"} // следующий "пятый" элемент
            };

            var actualIndexesWithValues = new List<string>();

            victimArray.RunActionOnEach(eachElementNumber: 5, 
                actionOnElement: (elementValue) => {
                    Console.WriteLine($"Какое-то жизненно необходимое действие на элементе \"{elementValue}\"");
                    actualIndexesWithValues.Add(elementValue);
                }
            ).ToList();
            
            // проверяем, что результат совпадает с нашими ожиданиями
            CollectionAssert.AreEquivalent(expectedIndexesWithValues, actualIndexesWithValues);
        }
    }

    internal static class IEnumerableExtension
    {
        /// <summary>
        /// Дергает переданный Action на каждом eachElementNumber элементе
        /// </summary>
        public static IEnumerable<string> RunActionOnEach(this IEnumerable<string> sourceCollection, int eachElementNumber, Action<string> actionOnElement)
        {
            int currentNumber = 1;
            foreach (var element in sourceCollection)
            {
                if (currentNumber % eachElementNumber == 0)
                    actionOnElement(element);
                
                currentNumber++;

                yield return element;
            }
        }
    }

Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы