Features of ES10
Array.Flat()
Copy let multi = [1,2,3,[4,5,6,[7,8,9,[10,11,12]]]];
multi.flat(); // [1,2,3,4,5,6,Array(4)]
multi.flat().flat(); // [1,2,3,4,5,6,7,8,9,Array(3)]
multi.flat().flat().flat(); // [1,2,3,4,5,6,7,8,9,10,11,12]
multi.flat(Infinity); // [1,2,3,4,5,6,7,8,9,10,11,12]
Array.flatMap()
Copy let array = [1, 2, 3, 4, 5];
array.map(x => [x, x * 2]);
[Array(2), Array(2), Array(2)]
0: (2)[1, 2]
1: (2)[2, 4]
2: (2)[3, 6]
3: (2)[4, 8]
4: (2)[5, 10]
Object.fromEntries()
Copy let obj = { apple : 10, orange : 20, banana : 30 };
let entries = Object.entries(obj);
entries:
(3) [Array(2), Array(2), Array(2)]
0: (2) ["apple", 10]
1: (2) ["orange", 20]
2: (2) ["banana", 30]
let fromEntries = Object.fromEntries(entries);
{ apple: 10, orange: 20, banana: 30 }
String.trimStart() & String.trimEnd()
Copy let greeting = " Space around ";
greeting.trimEnd(); // " Space around";
greeting.trimStart(); // "Space around ";
Optional Catch Binding
Allow developers to use try/catch without creating an unused binding. You are free to go ahead make use of catch block without a param
Copy Previous:
(() => {
try {
JSON.parse(text)
return true
} catch(err) {
return false
}
})()
=> false
New feature:
try {
JSON.parse(text);
return true;
}
catch
{
return false;
}
Function.toString()
The toString()
method returns a string representing the source code of the function.Earlier white spaces,new lines and comments will be removed when you do now they are retained with original source code
Copy function () { console.log('Hello there.'); }.toString();
// function () { console.log('Hello there.'); }
Symbol.description
The read-only description
property is a string returning the optional description of Symbol
objects.
Copy Symbol('desc').toString(); // "Symbol(desc)"
Symbol('desc').description; // "desc"
Symbol('').description; // ""
Symbol().description; // undefined
// well-known symbols
Symbol.iterator.toString(); // "Symbol(Symbol.iterator)"
Symbol.iterator.description; // "Symbol.iterator"
// global symbols
Symbol.for('foo').toString(); // "Symbol(foo)"
Symbol.for('foo').description; // "foo"
Well Formed JSON.Stringify()
To prevent JSON.stringify
from returning ill-formed Unicode strings.
Copy Before:
JSON.stringify("\uD800"); // '"�"'
Now:
JSON.stringify("\uD800"); // '"\\ud800"'
Array.Sort Stability
Users with same rating retain their sorting order
Copy var fruit = [
{ name: "Apple", count: 13, },
{ name: "Pear", count: 12, },
{ name: "Banana", count: 12, },
{ name: "Strawberry", count: 11, },
{ name: "Cherry", count: 11, },
{ name: "Blackberry", count: 10, },
{ name: "Pineapple", count: 10, }
];
// Create our own sort criteria function:
let my_sort = (a, b) => a.count - b.count;
// Perform stable ES10 sort:
let sorted = fruit.sort(my_sort);
console.log(sorted);