как очистить объект js в том числе и вложенный в цикле?

Как всем свойствам присвоить значение 0?

data: {
  one:{
    x: 10,
    y:20
  },
  two:{
    x: 10,
    y:20
  },
  three:{
    object1:{
      x: 10,
      y:20
    },
    object2:{
      x: 10,
      y:20
    },
    
  }
}

Ответы (2 шт):

Автор решения: vsemozhebuty

Можно попробовать рекурсивно:

const object = {
  data: {
    one:{
      x: 10,
      y: 20
    },
    two:{
      x: 10,
      y: 20
    },
    three:{
      object1:{
        x: 10,
        y: 20
      },
      object2:{
        x: 10,
        y: 20
      },

    }
  }
};

reset(object);

console.log(JSON.stringify(object, null, '  '));

function reset(obj) {
  for (const [key, value] of Object.entries(obj)) {
    if (typeof value === 'object' && value !== null) reset(value);
    else obj[key] = 0;
  }
}

→ Ссылка
Автор решения: yar85

В случае таких вот простых значений с заранее известной схемой (в данном случае { x: Number, y: Number }), можно использовать обычную строковую замену на сериализованном представлении объекта:

const foo = {
  data: {
    one: { x: 10, y: 20 },
    two: { x: 10, y: 20 },
    three: {
      object1: { x: 10, y: 20 },
      object2: { x: 10, y: 20 },
    },
  },
};

const reset = obj => JSON.parse(
  JSON.stringify(foo).replace(/{\s*"[xy]":[^}]+}/g, '{ "x": 0, "y": 0 }')
);
console.log(reset(foo));

Этот подход должен работать быстрее прочих, но весьма опасен: его не следует использовать в случаях когда схема вложенных объектов может варьироваться (ошибочно совпадая с указанным шаблоном замены).

→ Ссылка