const add=(x,y,z)=>x+y+z;
const args = [1,2,3];
console.log(add.toString());
console.log(add(args));
console.log(add(...args));
(x,y,z)=>x+y+z
1,2,3undefinedundefined
6

const add = (x, y, z) => x + y + z;
const args = [1, 2, 3];
const add1 = add.bind(null, 1);
console.log(add1(2, 3));
6

const add = (x, y, z) => x + y + z;
console.log(`add.length: ${add.length}`);
console.log(`add.toString: ${add.toString()}`);
console.log(`add.call: ${add.call(null,1,2,3)}`);
const args = [1, 2, 3];
console.log(`add(...args): ${add(...args)}`);
const add1 = add.bind(null, 1);
console.log(`add1(2, 3) with bind 1: ${add1(2,3)}`);
add.length: 3
add.toString: (x, y, z) => x + y + z
add.call: 6
add(...args): 6
add1(2, 3) with bind 1: 6

Convert Array:

The following is a challenge extracted from the LinkedIn Learning ES6 tutorial. The requirement is to count the votes in the elections for each candidate.

const electionVotes = [
'Harry', 'Rick', 'Ben', 'Ben', 'Harry', 'Ashley',
'Connor', 'Rick', 'Ashley', 'Rick', 'Albert', 'Ben',
'Michael', 'Rick', 'Albert', 'Karen', 'Harry',
'Karen', 'Donna', 'Ashley', 'Albert', 'Harry',
'Dane', 'Dane', 'Rick', 'Donna', 'Mortimer',
];
const tallyVotes = (votes) => {
// Your code here <-----------
};
console.log(tallyVotes(electionVotes));
/* Expected Output (something like this):
{
Harry: <some number>
Donna: <some number>
Rick: <some number>
...
}
*/
const tallyVotes = (votes) => {
return votes.reduce((acc,name)=>({
...acc,
[name]: acc[name] ? acc[name] + 1 : 1,
// candidate name : count is defined? if it is...+1.
// if is not candidate name = 1
}),{});
};

And the result…

{ Harry: 4,
Rick: 5,
Ben: 3,
Ashley: 3,
Connor: 1,
Albert: 3,
Michael: 1,
Karen: 2,
Donna: 2,
Dane: 2,
Mortimer: 1 }

Also it could be reduced to 1 line

const tallyVotes = (votes) => 
votes.reduce((acc,name)=>({
...acc,
[name]: acc[name] ? acc[name] + 1 : 1,
}),{});

Sources:
https://www.linkedin.com/learning/learning-functional-programming-with-javascript-es6-plus/solution-convert-array