Мой стек: javascript, html, css, jquery, cos(cache intersystems), sql.
Также немного знаю C#, python.
Местоположение
Россия, Башкортостан(Башкирия), Уфа

Наибольший вклад в теги

Все теги (2)

Лучшие ответы пользователя

Все ответы (4)
  • Почему в данном случае в массив добавляется только последнее значение?

    @nonamemovich
    Важно понимать отличие ссылочных типов данных(object) от значимых типов данных(number, string, boolean, undefined, null, symbol (в ECMAScript 6)) в javascript.

    var a=6;
    var b = a;


    a и b будут указывать на разные участки памяти, изменение b не скажется на a.

    var obj = {
      prop1: "value1",
      prop2: 123
    }
    var refObj = obj;


    теперь obj и refObj это разные ссылки на один и тот же участок в памяти, присвоив refObj.prop1 = "valueChanged" вы измените содержимое участка памяти где размещено свойство объекта, и потому obj.prop1 == "valueChanged".
    Однако важно понимать что refObj и obj разные ссылки пусть хоть и ссылаются на один и тот же объект, переназначение одной из ссылок никак не скажется на другой ссылке refObj = [1,2,3,4,5] (массивы в js тоже объекты определённой структуры),
    obj всё также будет равен { prop1: "value1", prop2: 123}.

    При
    typeof dataJson[i].date != 'object'
    или вам нужно было сохранить ссылки в массив arrInfo
    можно просто пушить dataJson[i].date в массив.

    var ignoreObj = new Map(); // Map может использовать в качестве key всё что угодно( number, string, object)
    for(let i = 0; i < dataJson.length; i++) {
    	if(!ignoreObj.has(dataJson[i].date)) {       // ignoreObj.has(obj) скажет был ли obj добавлен в ignoreObj
    		arrInfo.push(dataJson[i].date);
    		ignoreObj.set(dataJson[i].date, 1);    // запоминаем объект, чтобы повторно не добавлять в массив
    	}
    }

    при typeof dataJson[i].date == 'object' изменение свойств dataJson[i].date скажется и на arrInfo.

    Либо если вы хотели "запомнить" объекты в текущем состоянии выполнить копирование свойств dataJson[i].date в новый объект.

    var ignoreObj = new Map(); 
    
    for(let i = 0; i < dataJson.length; i++) {
    	if(!ignoreObj.has(dataJson[i].date)) { 
    		var clone = { date:{} };                     // объект для "клонирования"
    		var clone.date = Object.assign({}, dataJson[i].date);         // непосредственно клонирование свойств <b>первого уровня</b> dataJson[i].date.
    		arrInfo.push(clone);
    		ignoreObj.set(dataJson[i].date, 1);  
    	}
    }

    при таком варианте изменение свойств dataJson[i].date не изменит содержимого arrInfo.

    Надеюсь я смог вам помочь, а не запутал ещё больше))).
    Ответ написан
    Комментировать
  • Си или assembler, с чего начать?

    @nonamemovich
    Если желание не отпало вот весьма полезный ресурс wasm.in. А так согласен со всеми господами выше, ассемблер устарел. Лучше изучать С.

    spoiler

    Изучая ассемблер учти следующие (столкнувшись со всем этим я плюнул на продолжение изучния асма под win32):
    - Необходимост отличного знания платформы (win, linux либо ещё что-то), если хочешь писать программы посложнее окна с парой кнопок(утрированно).
    - отсутствие адекватной обработки runtime ошибок (будешь сидеть и дебажить в ollydbg, softice ВЕСЬ код)
    - отсутствие нормальной IDE, хотя это ассемблер, какая тут мб ide)))
    - отсутствие обширного коммюнити, не получится зайти в инет и посмотреть, либо спросить, все велосипеды будешь писать сам, что хорошо для обучения, плохо для разработки.

    и многое другое, что я сейчас не вспомню и не хочу вспоминать...
    Ответ написан
    Комментировать