// Создать функцию work, что она делает понятно, надеюсь
function work(a, b) {
alert( a + b );
}
// Создать функцию spy, которая принимает в себя функцию
function spy(func) {
// Создать функцию-обертку, которая принимает в себя все аргументы
// функции, внутри которой она была вызвана.
function wrapper(...args) {
// Сохранить аргументы внутри wrapper.calls
wrapper.calls.push(args);
// Привязать функцию, что передавалась как агрумент,
// к контексту, в котором она будет вызвана
return func.apply(this, arguments);
}
// Вот тут начинается полный говнокод.
// То, что написано снизу, равноценно следующему:
// var wrapper;
// wrapper.calls = [];
// Почему говнокод? Потому что во первых никто
// давно в 2020 году не пользуется var. А почему?
// А потому что эта переменная будет висеть на общее обозрение.
// Никогда не надо делать так, объявляйте нормально:
// const wrapper или let wrapper. Более того, не понятно,
// зачем здесь нужен именно wrapper.calls. Можно просто создать
// переменную const wrapper = [] и пушить в неё.
wrapper.calls = [];
// Собственно вернуть то что получилось.
return wrapper;
}
// Снова говнокод. По итогу теперь work = wrapper, у которого определен
// метод func как function func(a, b) { alert(a+b) }. work что объявлен в самом начале исчез.
work = spy(work);
// Здесь вызывается то что получилось.
work(1, 2); // 3
work(4, 5); // 9
// Тут выводятся значения из массива, всё понятно
for (let args of work.calls) {
alert( 'call:' + args.join() ); // "call:1,2", "call:4,5"
}
const argumentsArray = [];
function work(a, b) {
console.log(a + b);
}
function loggedArgs(...args) {
argumentsArray.push(args);
}
function workAndLog() {
work(...arguments);
loggedArgs(...arguments);
}
workAndLog(1, 2); // 3
workAndLog(4, 5); // 9
for (let args of argumentsArray) {
console.log("call:" + args.join()); // "call:1,2", "call:4,5"
}
./node_modules/.bin/eslint ./src
"scripts": {
"dev": "webpack-dev-server --mode development --open",
"build": "webpack --mode production",
"eslint": "eslint"
}
npm run eslint ./src
чтобы числа повторялись не более двух раз
let res = {
vasis: function(location){
let cell = document.querySelector(location);
console.log(cell)
}
}
res.vasis('.mama')
res.vasis('.s10')
<div class="mama">111</div>
<tr>
<td class="s10"></td>
</tr>
Как из этого массива, создать новый массив, и чтобы в нем были значения из массива user, что-то типа такого массива должно получиться res = [5,12,2,22,'5,23',cost,'5',numbers,1,5,33,count,props,4,area,7];
const toArray = val =>
val instanceof Object
? [].concat(...(val instanceof Array
? val
: Object.entries(val)
).map(toArray))
: [ val ];
const res = toArray(user);
let wall1 = [
{ color: '#5A6FDA', range: [0, 25] },
{ color: '#52DA33', range: [26, 35] },
{ color: '#DA2278', range: [36, 56] },
{ color: '#B955DA', range: [57, 79] },
{ color: '#2D1ADA', range: [80, 102] },
{ color: '#33B9DA', range: [103,152] },
{ color: '#DA6E15', range: [153, 200] }
]
let wall2 = {
{ 0: { '#5A6FDA': [0, 25] } },
{ 1: { '#52DA33': [26, 35] } },
{ 2: { '#DA2278': [36, 56] } },
{ 3: { '#B955DA': [57, 79] } },
{ 4: { '#2D1ADA': [80, 102] } },
{ 5: { '#33B9DA': [103,152] } },
{ 6: { '#DA6E15': [153, 200] } }
}
let arr = [[1,23,23,21,1,23,41],[2,12,3,321,234,234,1,31,321,22,3],[12,32,53,1,3,12,3,2],[12,32,53,1,3,12,3,2]].reduce(function(a, b) {
return a.concat(b);
});
var result = [];
while(result.length < 6) {
let sum = Math.floor(Math.random() * (arr.length - 0)) + 0;
if(result.indexOf(arr[sum]) == -1) { // Проверяем
result.push(arr[sum]);
}
}
arr
. То есть:let arr = [[1,23,23,21,1,23,41],[2,12,3,321,234,234,1,31,321,22,3],[12,32,53,1,3,12,3,2],[12,32,53,1,3,12,3,2]].reduce(function(a, b) {
return a.concat(b);
});
let unique = arr.filter((val, i) => arr.indexOf(val) == i);
var result = [];
while(result.length < 6) {
let sum = Math.floor(Math.random() * (unique.length - 0)) + 0;
if(result.indexOf(unique[sum]) == -1) { // Проверяем
result.push(unique[sum]);
}
}