function partitionOn(items) {
let arr = [];
let long = 0;
for (i=0; i<items.length; i++){
if (items[i]%2===0){
arr.push(items[i])
items.splice(i,1)
}
}
long = items.length;
items = items.concat(arr)
console.log(items)
return long
}
var items = [1, 2, 3, 4, 5, 6];
var i = partitionOn(items);
console.log(items)
Почему в items элементы в цикле удаляются, а конкатенация не проходит ? В самой функции консоль выводит правильно, а вне ее массив как до конкатенации.
Потому что items.concat(arr) возвращает другой референс на новый массив. Вы просто перетираете референс на массив входного параметра функции. Вам нужно либо манипулировать входным массивом, либо возвращать новый:
function partitionOn(items) {
let arr = [];
let long = 0;
for (i=0; i<items.length; i++){
if (items[i]%2===0){
arr.push(items[i])
items.splice(i,1)
}
}
long = items.length;
items = items.concat(arr); // тут создали новый массив,
// присобачили к нему items и следом arr,
// вернули реф на новый массив
return items;
}
var items = [1, 2, 3, 4, 5, 6];
var newItems = partitionOn(items);
console.log(newItems)
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости