Как бороться с большим массивом (100.000 объектов)?

1

У меня есть массив, содержащий 100 000 объектов. Эти объекты имеют несколько пар ключ/значение.

Пример моего массива:

var data = [
{
    "name": "John",
    "id": 1,
    "completed": "yes",
    "prio": 3,
    "importance": 2
  },
  {
    "name": "Jim",
    "id": 2,
    "completed": "yes",
    "prio": 4,
    "importance": 4
  }
]

Как показано ниже, я создал новый массив из существующего, но теперь с выбранными парами ключ/значение из исходного массива.

var newData = [];

for (var i = 0; i < data.length; i++) {

    newData[i] = {"name": data[i].name, "id": data[i].id};

    console.log(newData[1]);

}

Как вы также можете видеть, я зарегистрировал новый массив на консоли. Но то, что я на самом деле нужно хранить массив newData в отдельном файле, в котором я могу увидеть все объекты массива, как в моем примере массива data. Уметь видеть, что все объекты newData на самом деле не так важны, но было бы неплохо работать с массивом позже. Например, я хотел бы использовать R для лучшего понимания данных.

Как я могу это сделать?

ПРИМЕЧАНИЕ. Я в браузере!

Я действительно борюсь с этой проблемой и буду рад, если кто-то сможет мне помочь...

Благодарю!

Теги:
object
arrays

2 ответа

2

Вы можете использовать URL.createObjectURL() вместе с Blob следующим образом:

var TxtFile = function(text) {

  let data = new Blob([text], {
      type: 'text/plain'
    }),
    file = window.URL.createObjectURL(data);

  // revoke the URL after you're done using it.
  function _revokeObjectUrl() {
    window.URL.revokeObjectURL(textFile);
  }

  return {
    file: file,
    destroy: _revokeObjectUrl
  };
};

const data = [{
    "name": "John",
    "id": 1,
    "completed": "yes",
    "prio": 3,
    "importance": 2
  },
  {
    "name": "Jim",
    "id": 2,
    "completed": "yes",
    "prio": 4,
    "importance": 4
  }
];

const newData = data.map(o => ({
  name: o.name,
  id: o.id
}));

document.querySelector('a').href = new TxtFile(JSON.stringify(newData)).file;

//You can still access the array.
console.log(newData);
<a download>Download file</a>
0

Вы можете использовать blob для хранения ваших данных и использовать эту библиотеку для загрузки вашего файла на свое устройство:

  var blob = new Blob([JSON.stringify(newData, null, 2)], {type: "text/plain;charset=utf-8"});
  saveAs(blob, filename+".json");

Ещё вопросы

Сообщество Overcoder
Наверх
Меню