Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Не работает indexOf для массива объектов (https://javascript.ru/forum/misc/60444-ne-rabotaet-indexof-dlya-massiva-obektov.html)

callbackhell 30.12.2015 23:16

Цитата:

Сообщение от Keramet
и что значит

Значит ровно то, что я написал.

callbackhell 30.12.2015 23:19

Цитата:

Сообщение от Keramet
В принципе, я разобрался (спс Рони), просто про ахинею хотелось бы поподробнее

Кстати, да, Рони Вам сказал то же самое, что и я, я просто не читал тред

Keramet 30.12.2015 23:54

Про ахинею вроде разобрались: для вас - ахинея (вы, видимо гуру JS), для меня - процесс обучения.
Теперь про это хотелось бы узнать:
Цитата:

Сообщение от callbackhell (Сообщение 402016)
конструкция {a: 1} это сахар для new function(){this.a = 1}

как понять это умозаключение? (если, конечно, ГУРУ может столь низко опуститься, чтобы растолковать необученной черни свои постулаты):thanks:

callbackhell 31.12.2015 00:27

Keramet,
я Вам уже ответил: в буквальном смысле. Эти 2 конструкции семантически эквивалентны.

То есть. Создаем объект, вешаем ему __proto__ = Object.prototype, и сеттим его локальный слот a в значение 1.

callbackhell 31.12.2015 00:28

Keramet,
И да, Ваш тон мне не нравится.

рони 31.12.2015 00:34

callbackhell,
интересно, но как обычно в целом, не понимаю.

callbackhell 31.12.2015 00:35

рони,
Что конкретно?

рони 31.12.2015 00:54

callbackhell,
как это поможет сравнить есть похожий обьект в массиве или нет?

callbackhell 31.12.2015 00:55

рони,
Что это? Понимание языка? Очевидно поможет. Оно вообще, внезапно, всегда помогает.

рони 31.12.2015 01:10

callbackhell,
вариант решения ...
var arr = [];
function find(arr, obj) {
    return arr.every(function(el) {
        return el.a != obj.a || el.b != obj.b
    })
}
var obj = {a: 1, b: 1};
find(arr, obj) && arr.push(obj);
obj = {a: 2, b: 1};
find(arr, obj) && arr.push(obj);
obj = {a: 1, b: 1};
find(arr, obj) && arr.push(obj);
obj = {a: 1, b: 1};
find(arr, obj) && arr.push(obj);
obj = {a: 2, b: 2};
find(arr, obj) && arr.push(obj);
alert(JSON.stringify(arr));

причём тут прототипы не понимаю


Часовой пояс GMT +3, время: 01:17.