如何处理大数组(100.000个对象)?

时间:2017-05-31 20:53:26

标签: javascript arrays json object

我有一个包含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来更好地理解数据。

我该怎么做?

注意:我在浏览器中!

我真的在努力解决这个问题,如果有人能帮助我,我会很高兴......

谢谢!

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

您可以使用blob存储数据,并使用this 库在设备上下载文件:

@user.cart.cart_items.phone.brand_name