JS передает значения массива как отдельные аргументы

#javascript #arrays

#javascript #массивы

Вопрос:

У меня есть CSV-файл с некоторыми данными, и для каждой строки я разделяю его на запятую, чтобы получить массив vals .

Теперь я хочу перейти vals в функцию, но «сгладить» ее (без изменения функции, потому что она используется в другом месте)

 function foo(x, y, z) {
     return x*y*z:
}
    
var vals = [1, 3, 4];
//want a shortcut to this (this would be a nightmare with like 20 values)
foo(vals[0], vals[1], vals[2]);
 

Редактировать:
Извините, я упустил большую деталь. Мне нужна только часть массива, например, первые 10 элементов массива из 12 элементов. Любой ярлык для этого?

Комментарии:

1. В JavaScript вам не нужно указывать var для аргументов. function foo(x, y, z) работает нормально.

Ответ №1:

Используйте оператор распространения; если вы используете es6.

 var vals = [1,2,34,5]
foo(...vals)
 

Или вы также можете использовать apply

 function foo(a,b,c,d,e) {
  console.log(a,b,c,d,e)
}
var vals = [1,2,3,4,5]
foo.apply(null, vals) 

Ответ №2:

во-первых, вам не нужны var параметры,

во-вторых, вы можете использовать оператор распространения

 function foo(x, y, z) {
  return x * y * z;
}
var vals = [1, 3, 4];
console.log(foo(...vals)); 

ссылка: оператор распространения