Массивы обработки Powershell в многомерном массиве после определенного числа

если мне нужно обработать все массивы в многомерном массиве после пропуска первого, как я могу это сделать?

в этом случае добавляем + 5 к каждому значению. что, если я хочу начать со второго массива $ mdarr [1] <

cls
$mdarr = @()
$i = @()
$ii = @()
$mdarr = @((0,1,2,3,4),(5,6,7,8,9),(10,11,12,13,14))

for ($i = 0; $i -lt $mdarr.Length; ++$i){
    for ($ii = 0; $ii -lt $mdarr[$i].Length; ++$i){
    $mdarr = $mdarr[$i][$ii] + 5
    }
}
write-host $mdarr

в вышесказанном так много неправильного. результат, который я ищу, должен быть:

((0,1,2,3,4),(10,11,12,13,14),(15,16,17,18,19))

как бы это сделать?

Структурированный массив Numpy
Структурированный массив Numpy
Однако в реальных проектах я чаще всего имею дело со списками, состоящими из нескольких типов данных. Как мы можем использовать массивы numpy, чтобы...
T - 1Bits: Генерация последовательного массива
T - 1Bits: Генерация последовательного массива
По мере того, как мы пишем все больше кода, мы привыкаем к определенным способам действий. То тут, то там мы находим код, который заставляет нас...
Что такое деструктуризация массива в JavaScript?
Что такое деструктуризация массива в JavaScript?
Деструктуризация позволяет распаковывать значения из массивов и добавлять их в отдельные переменные.
0
0
76
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Проблема в обновлении содержимого массива. Все, что нужно, - это вложенный цикл для обработки элементов во внутренних массивах с соответствующей индексацией. Вот так,

$mdarr = @((0,1,2,3,4),(5,6,7,8,9),(10,11,12,13,14))
for($i = 1; $i -lt $mdarr.Length; ++$i) {
    for($j = 0; $j -lt $mdarr[$i].Length; ++$j) {
        $mdarr[$i][$j] += 5
    }
}

$mdarr[1]
10
11
12
13
14

Что касается того, почему не сработал оригинал, давайте проанализируем код и посмотрим, что было не так:

# This starts from 1st element (index 0), which was to be skipped. Bug
for ($i = 0; $i -lt $mdarr.Length; ++$i){

    # Loop counters $ii and $i are confusing, name is almost same
    # What's more, $i is increased instead of $ii. Bug 
    for ($ii = 0; $ii -lt $mdarr[$i].Length; ++$i){
        # This doesn't make sense. It's overwriting the whole 
        # source array-of-arrays with a single value.
        # The array cell was to be updated instead. Bug
        $mdarr = $mdarr[$i][$ii] + 5
    }
}

Подводя итог, идея была. Из-за ошибок индексации и несоответствующей операции присваивания результат был неверным. Тем не менее, исправить довольно просто, поскольку основная логика была в порядке.

я просто столкнулся с ситуацией, когда это дало бы мне ошибку, если бы массив содержал только одно значение. Unable to index into an object of type System.Int32., что нужно настроить?

secondplace 19.11.2018 06:05

оказывается, мой ввод для цикла был ошибочным. Мне пришлось обернуть команду в @(), чтобы вернуть массив, а не скалярный объект.

secondplace 20.11.2018 04:40

Другие вопросы по теме