Помогите разобраться с кодом, выводится только одно действие
Хочу чтобы функция принимала массив элементов, выводила его и сумму всех его элементов. Когда делал отдельными функциями, то все работало. Пытаюсь все объединить в одну, но вывод происходит только массива, без суммы элементов. Помогите разобраться что я делаю не так.
function createArr(){
var sum = 0;
var emptyArr = [];
for (var i=0 ; i < arguments.length; i++) {
emptyArr[i] = arguments[i];
sum+=arguments[i];
}
return emptyArr;
console.log(sum);
}
console.log(createArr(1,2,3,4))
А если я захочу к примеру сделать какое-то действие с элементами массива, например возведение в квадрат и посчитать потом сумму получившихся элементов, как можно будет упростить код, чтобы sum не присваивать опять arguments[i]*arguments[i] а она брала значение уже готового массива emptyArr ?
function createArr () {
var sum=0;
var emptyArr = [];
for (var i=0; i<arguments.length; i++) {
emptyArr[i] = arguments[i]*arguments[i];
sum+=arguments[i]*arguments[i];
}
console.log(sum);
return emptyArr;
}
console.log(createArr(1,2,3,4))
Ответы (2 шт):
Ну да, либо как тебе в комментария описали, либо выводи объектом и потом бери , что тебе надо:
function createArr(){
var sum = 0;
var emptyArr = [];
for (var i=0 ; i < arguments.length; i++) {
emptyArr[i] = arguments[i];
sum+=arguments[i];
}
return {
emptyArr,
sum
};
}
console.log(createArr(1,2,3,4)) // { emptyArr: [1, 2, 3, 4], sum: 10 }
- Вы в функции пишете:
return emptyArr;
После этой строки весь дальнейший код не выполняется. Перенесите console.log(sum) выше ретерна.
- хотеть, чтобы функция выводила или возвращала и массив элементов и сумму — хотеть две разные вещи.
Чтоб выводила достаточно написать:
function createArr(){
var sum = 0;
for (var i=0 ; i < arguments.length; i++) {
sum+=arguments[i];
console.log( (i+1) + " array element = " + arguments[i]);
}
console.log("sum = "+ sum);
}
function createArr(){
var sum =0;
var array[];
for (var i = 0;i <arguments.length; ++i){
array [i] = Math.pow(arguments[i], 2); // в квадрат
sum += array[i];
console.log (array[i]);
}
console.log(sum);
}