Как изменить аргумент функции, так чтобы он был виден во внешней области видимости?

299
12 февраля 2017, 13:12

Функция partitionOn принимает 2 аргумента, pred — это функция задающая условия выборки элементов из массива items.

Функция должна возвращать длину нового массива с элементами удовлетворяющими pred. А также изменять массив items, который принимает в качестве аргумента.

В моем коде items не изменяется во внешней области видимости. Как сделать чтобы он изменялся?

В консоли пишу

window.items.concat(arrPredFalse, arrPredTrue);

и работает, но codewars выдает ошибку.

function partitionOn(pred, items) {
    var arrPredTrue = [];
    var arrPredFalse = [];
    for (var i = 0; i < items.length; i++) {
      if (pred(items[i])) {
        arrPredTrue.push(items[i]);
      } else {
        arrPredFalse.push(items[i]);
      }
    }
    items.concat(arrPredFalse, arrPredTrue);
    return arrPredTrue.length;
}
Answer 1

Функция concat не изменяет массив, а создаёт новый.

Для того чтобы items изменился нужно делать так:

items = arrPredFalse.concat( arrPredTrue );
READ ALSO
Возможно ли сделать веревку на SVG?

Возможно ли сделать веревку на SVG?

вот то, что делаю http://codepenio/cache0/pen/rjQwZJ

321
Передать значение переменной JS в стиль CSS

Передать значение переменной JS в стиль CSS

Нужно передать диву ширину, значение которой вычисляется в JS

843