迭代多维数组,过滤并在javascript中创建新数组
Iterate over multidimensional array, filter and create new one in javascript
我发现了这篇文章,但它不是我真正想要的。我有一个巨大的JSON文件,结构如下:
{
foo: [1, 2, 3, ...],
bar: [
{
name: 'abc',
cl: 2,
data: [
[[2, 4, 6], [4, 5, 6]],
[[5, 3, 5], [5, 7, 9]],
[[6, 8, 9], [6, 8, 9]],
...
]
},
{
name: 'def',
cl: 1,
data: [10, 20, 30, ...]
}
]
}
我有一个代表对象的类,我可以提取父对象中的属性和对象。foo
为必选属性,bar
为可选属性。data
为数字数组,可以是1D或3D。foo.length
和data.length
总是相同的。我想减少文件大小(在内容方面),但保持相同的结构,即将旧对象复制到具有完全相同结构但更短的新对象,因此我可以定义更小的长度或范围并获得新对象,例如,如果我说从foo[0]
到foo[1]
,那么数据属性也将从data[0]
到data[1]
在新对象中。
这可能吗?如果是,我该如何实现?也许是map
?但如何?
function filter(obj, from, to){
/// ?
}
致意。编辑:
新的简化对象应该是这样的:
{
foo: [1, 2],
bar: [
{
name: 'abc',
cl: 2,
data: [
[[2, 4, 6], [4, 5, 6]],
[[5, 3, 5], [5, 7, 9]]
]
},
{
name: 'def',
cl: 1,
data: [10, 20]
}
]
}
您可以使用Array#slice
。
function slice(obj, from, to) {
obj.foo = obj.foo.slice(from, to + 1);
obj.bar.forEach(function (a) {
a.data = a.data.slice(from, to + 1);
});
}
var object = { foo: [1, 2, 3], bar: [{ name: 'abc', cl: 2, data: [[[2, 4, 6], [4, 5, 6]], [[5, 3, 5], [5, 7, 9]], [[6, 8, 9], [6, 8, 9]], ] }, { name: 'def', cl: 1, data: [10, 20, 30] }] };
slice(object, 0, 1);
console.log(object);
.as-console-wrapper { max-height: 100% !important; top: 0; }
相关文章:
- 从多维嵌套json数组创建下拉列表
- 为对象数组创建列表项
- 如何在cycle js中从JSON数组创建组件
- 使用数据数组创建多个类似组件
- 如何在 Angular JS 中从关联数组创建多个复选框
- 如何为给定数组创建跨度列表
- 如何在javascript中使用2个一维数组创建层次结构树
- 从数据对象数组创建折线图
- 从 javascript 数组创建一个 Jquery 数组
- Angular2从数组创建一个列表
- 使用JavaScript's Reduce从对象数组创建数组
- 如何从数组创建 jqtree
- 从字符串数组创建唯一组合数组
- 反应.js通过数组创建循环
- 从数组创建新元素,直到每秒数组为空
- 如何使用其他流的值数组创建流
- JavaScript:从字节数组创建图像资源
- 使用拆分字符串的数组创建一个对象
- 从一组数据或数组创建对象
- 多维数组 - 创建一个表