Size: a a a

JavaScript Noobs — сообщество новичков

2020 December 17

ВБ

Владислав Баурин... in JavaScript Noobs — сообщество новичков
const findEqualElements = (arr, arr2) => {
   const objForArr = arr.reduce((acc, i) => ({ ...acc, [i]: acc[i] ? ++acc[i] : 1 }), {}) //первый обход
   const objForArr2 = arr2.reduce((acc, i) => ({ ...acc, [i]: acc[i] ? ++acc[i] : 1 }), {}) //второй обход

   const fullObj = {}

   for (key in objForArr)
       if (objForArr2[key])
           fullObj[key] = objForArr[key] <= objForArr2[key] ? objForArr[key] : objForArr2[key]//третий обход

   const res = []
   for (key in fullObj)//четвертый обход
       for (let i = 0; i < fullObj[key]; i++) //это уже не обход, а создание результирующего списка в цикле =)
           res.push(key)

   return res // 4 обхода
}

const a = [1,2,3,1,2,3,1,2,1,2,1,2,1,2,4,3,2,1,4,2]
const b = [2,2,3,4,5,6,7,8,9]
findEqualElements(a,b) //["2", "2", "3", "4"]
источник

OJ

Oleg Junior in JavaScript Noobs — сообщество новичков
Владислав Баурин
const findEqualElements = (arr, arr2) => {
   const objForArr = arr.reduce((acc, i) => ({ ...acc, [i]: acc[i] ? ++acc[i] : 1 }), {}) //первый обход
   const objForArr2 = arr2.reduce((acc, i) => ({ ...acc, [i]: acc[i] ? ++acc[i] : 1 }), {}) //второй обход

   const fullObj = {}

   for (key in objForArr)
       if (objForArr2[key])
           fullObj[key] = objForArr[key] <= objForArr2[key] ? objForArr[key] : objForArr2[key]//третий обход

   const res = []
   for (key in fullObj)//четвертый обход
       for (let i = 0; i < fullObj[key]; i++) //это уже не обход, а создание результирующего списка в цикле =)
           res.push(key)

   return res // 4 обхода
}

const a = [1,2,3,1,2,3,1,2,1,2,1,2,1,2,4,3,2,1,4,2]
const b = [2,2,3,4,5,6,7,8,9]
findEqualElements(a,b) //["2", "2", "3", "4"]
там на 5ой строке где оператор спред, там под капотом не осуществляется обход?
источник

В

Вячеслав in JavaScript Noobs — сообщество новичков
Владислав Баурин
const findEqualElements = (arr, arr2) => {
   const objForArr = arr.reduce((acc, i) => ({ ...acc, [i]: acc[i] ? ++acc[i] : 1 }), {}) //первый обход
   const objForArr2 = arr2.reduce((acc, i) => ({ ...acc, [i]: acc[i] ? ++acc[i] : 1 }), {}) //второй обход

   const fullObj = {}

   for (key in objForArr)
       if (objForArr2[key])
           fullObj[key] = objForArr[key] <= objForArr2[key] ? objForArr[key] : objForArr2[key]//третий обход

   const res = []
   for (key in fullObj)//четвертый обход
       for (let i = 0; i < fullObj[key]; i++) //это уже не обход, а создание результирующего списка в цикле =)
           res.push(key)

   return res // 4 обхода
}

const a = [1,2,3,1,2,3,1,2,1,2,1,2,1,2,4,3,2,1,4,2]
const b = [2,2,3,4,5,6,7,8,9]
findEqualElements(a,b) //["2", "2", "3", "4"]
Слишком сложно, если уж мы учитываем что массивы имеет неуникальные элементы то сначала нужно создать мапу первого массив, второй это фильтровать массив и вычитать 1 по ключу при совпадении
источник

В

Вячеслав in JavaScript Noobs — сообщество новичков
Oleg Junior
там на 5ой строке где оператор спред, там под капотом не осуществляется обход?
И это тоже косяк, пересоздание объекта убьет производительность
источник

OJ

Oleg Junior in JavaScript Noobs — сообщество новичков
Вячеслав
И это тоже косяк, пересоздание объекта убьет производительность
а какая задача? просто интересно стало
источник

ВБ

Владислав Баурин... in JavaScript Noobs — сообщество новичков
Вячеслав
И это тоже косяк, пересоздание объекта убьет производительность
Ну окееей
источник

В

Вячеслав in JavaScript Noobs — сообщество новичков
Oleg Junior
а какая задача? просто интересно стало
Пересечение массивов за линейное время
источник

ВБ

Владислав Баурин... in JavaScript Noobs — сообщество новичков
Oleg Junior
а какая задача? просто интересно стало
Найти пересечение 2 массивов. Первоначально было ещё условие, что они отсортированы. Можно было просто по флагу двигаться по 2м и собирать третий, но я вот такой вариант написал
источник

В

Вячеслав in JavaScript Noobs — сообщество новичков
А вообще я в ахуе что в Яндексе такие простые задачи дают
источник

ВБ

Владислав Баурин... in JavaScript Noobs — сообщество новичков
Там 4 собеса
источник

ВБ

Владислав Баурин... in JavaScript Noobs — сообщество новичков
минимум
источник

В

Вячеслав in JavaScript Noobs — сообщество новичков
Из них три с мудаками для отсева мудаков?)))
источник

В

Вячеслав in JavaScript Noobs — сообщество новичков
Дак ты то видел босса или слился на первом?)
источник
2020 December 18

A

Alexander in JavaScript Noobs — сообщество новичков
Доброй ночи. Есть тут кто-то, кто разбирается в графике? Конкретно snap.svg (Или Рафаэль, они похожи, вроде)
источник

A

Alexander in JavaScript Noobs — сообщество новичков
let canvas = Snap(800, 600);
canvas.addClass("canv");
fillCanvas = canvas.rect(0, 0, 800, 600);
fillCanvas.attr({
fill: 'gray',
});
let json_objects = '<?php echo $json_objects;?>';
let objects = JSON.parse(json_objects);

class Square {
constructor(obj) {
this.id = obj['id'];
this.name = obj['username'];
this.coord = Number(obj['coord']);
this.isSelected = 0;
this.rectangle = 0;
};

 draw(){
  this.rectangle = canvas.rect(this.coord, this.coord, 50, 50);
  this.rectangle.attr({
   fill: 'black',
  })
  this.rectangle.mousedown(this.selectSquare);

 }

 selectSquare() {
  alert(this.name);
  if (this.isSelected = 0) {
   this.rectangle.attr({
    fill: 'red',
   });
   this.isSelected = 1;
  }
  else {
   this.rectangle.attr({
    fill: 'black',
   });
   this.isSelected = 0;
  }
 }
}

arrOfSquares = [];

for(let i=0; i<objects.length; i++) {
let square = new Square(objects[i]);
square.draw();
arrOfSquares.push(square);

Извлекаю данные из бд, создаю класс, через циклы создаю его экземпляры и рисую их. Потом пытаюсь вызывать методы класса - а почти все атрибуты оказываются пустыми (undefined), а в id непонятное значение
источник

j

jk in JavaScript Noobs — сообщество новичков
Alexander
let canvas = Snap(800, 600);
canvas.addClass("canv");
fillCanvas = canvas.rect(0, 0, 800, 600);
fillCanvas.attr({
fill: 'gray',
});
let json_objects = '<?php echo $json_objects;?>';
let objects = JSON.parse(json_objects);

class Square {
constructor(obj) {
this.id = obj['id'];
this.name = obj['username'];
this.coord = Number(obj['coord']);
this.isSelected = 0;
this.rectangle = 0;
};

 draw(){
  this.rectangle = canvas.rect(this.coord, this.coord, 50, 50);
  this.rectangle.attr({
   fill: 'black',
  })
  this.rectangle.mousedown(this.selectSquare);

 }

 selectSquare() {
  alert(this.name);
  if (this.isSelected = 0) {
   this.rectangle.attr({
    fill: 'red',
   });
   this.isSelected = 1;
  }
  else {
   this.rectangle.attr({
    fill: 'black',
   });
   this.isSelected = 0;
  }
 }
}

arrOfSquares = [];

for(let i=0; i<objects.length; i++) {
let square = new Square(objects[i]);
square.draw();
arrOfSquares.push(square);

Извлекаю данные из бд, создаю класс, через циклы создаю его экземпляры и рисую их. Потом пытаюсь вызывать методы класса - а почти все атрибуты оказываются пустыми (undefined), а в id непонятное значение
А вот здесь ты this случаем не потерял?
this.rectangle.mousedown(this.selectSquare)
источник

A

Alexander in JavaScript Noobs — сообщество новичков
В смысле?
Кстати этот метод работает еще
источник

A

Alexander in JavaScript Noobs — сообщество новичков
То есть mouse down к ним привязывается, но сама функция не работает
источник

j

jk in JavaScript Noobs — сообщество новичков
Alexander
То есть mouse down к ним привязывается, но сама функция не работает
Забиндь контекст и посмотри на реакцию.
источник

A

Alexander in JavaScript Noobs — сообщество новичков
В смысле закоментировать?
источник