Как я могу оптимизировать метод.concat в es6
Как я могу оптимизировать метод.contact с функциями ES6. Моя линия работает хорошо, но я изучаю ES6, и я хотел бы получить хороший пример для написания этого кода с некоторыми функциями es6. (Разрушение или другой крутой способ) Спасибо
линию нужно оптимизировать, потому что мне не нравятся:
const list_B = buttonsType.toolz.concat(buttonsType.layerz,buttonsType.categoryz,buttonsType.sheetz,buttonsType.actionz);//***line to optimize */
контекстом являются:
const buttonsType = {// slots Names for interactive buttons editor
toolz:['iconParentMode', 'move', 'pivot', 'scaleicon', 'skewicon', 'rotateicon', 'drawLine', 'sunNigth', 'lockAll', 'playPause',],
layerz:[ 'gb0', 'gb1', 'gb2', 'gb3', 'gb4', 'gb5', 'gb6',],
categoryz:[ 'All', 'Characteres', 'Rocks', 'Trees', 'Buildings', 'Grass', 'FurnitureINT', 'FurnitureEXT', 'Cliffs', 'Objets', 'Divers copie',],
sheetz:[ 'SpriteSheets', 'TileSheets', 'Spines', 'Sprites',],
actionz:[ 'iconRenderable', 'icon_PinGrid', 'icon_grid', 'saveIcon',],
};
//////// ┌------------------------------------------------------------------------------┐
//////// CREATE BUTTONS GRAFICS INTERACTIONS
////////└------------------------------------------------------------------------------┘
// make and store buttons Data's
(function(){
// how i can optimise for es6 and write proper this concat ?
const list_B = buttonsType.toolz.concat(buttonsType.layerz,buttonsType.categoryz,buttonsType.sheetz,buttonsType.actionz);//***line to optimize */
for (let [i,len] = [0,list_B.length]; i < len; i++) {
const name = list_B[i];
const slot = $PME.gui.skeleton.findSlot(name);
};
})();
РЕДАКТИРОВАТЬ: РЕШЕНО
(function(){
const list_B = Object.entries(buttonsType);
for (let [i,len] = [0,list_B.length]; i < len; i++) {
const [type,list_name] = [list_B[i][0], list_B[i][1]];
list_name.forEach(name => {
buttonsSlots[name] = $PME.gui.skeleton.findSlot(name);
buttonsSlots[name].type = type;
});
};
})();
2 ответа
Решение
Вы могли бы использовать Object.entries
let a = [];
Object.entries(buttonsType).forEach(item => {a = a.concat(item[1])});
Я не знаю, можно ли говорить об оптимизации, но я бы сделал это:
const list_B = Object.keys(buttonsType)
.reduce((acc, key) => {
return acc.concat(buttonsType[key]);
},[]);
Перебирайте ключи в keysType. Конкат, в пустой массив, уменьшает каждый массив внутри keysType ключей