从“装饰”数组中删除命名属性

时间:2019-05-07 17:27:03

标签: javascript arrays

尽管我的问题来自DataTables.net,但我认为它适用于其他地方:

我从DataTables创建的表中检索类似数组的对象,如下所示:

var data = tableInstance.data(); // tableInstance is already a DataTables table instance

但是数据虽然类似于数组,但实际上是一个用DataTables API装饰的对象,导致了一个看起来像这样的“数组”(简化为假的“简短”版本):

[
  0: {thing: "stuff"}, 
  1: {thing: "nextStuff"}, 
  $: function(){}, 
  button: function() {},
  length: 2
]

我只想隔离实际的数组。有人发现这样做的优雅方式吗? “显而易见”的方法是仅迭代X次,直到data.length。例如,使用“每个”迭代器本质上就是这样做的:

var newData = [];

data.each(function (el, index) {
  newData.push(el);
})

但是我不禁想知道是否有更好的方法。通过删除不需要的属性,而不是通过将需要的项目推入新数组来生成新数组(或就地编辑,无需重新编译)。

或者这仅仅是微优化(甚至有成千上万个项目)的太多内容而已吗?

1 个答案:

答案 0 :(得分:4)

有一个更好的方法。使用Array.from

const newData = Array.from(data)