gpt4 book ai didi

javascript - 将数组合并为一个数组

转载 作者:行者123 更新时间:2023-11-30 12:37:50 25 4
gpt4 key购买 nike

如果这是 .NET,我会问如何转换 List<List<MyClass>List<MyClass> .但是,我不太擅长 javascript,也不知道如何使用 Javascript 术语将其作为问题提出!

我的 javascript 对象是这样的

enter image description here

并创建为:

js_datasets.push({
"DataItem0": {
lzabel: "This",
data: [[1408710276000, null],[1408710276000, 15]]
},
"DataItem1": {
lzabel: "That",
data: [[1408710276000, null],[1408710276000, 15]]
},
});


js_datasets.push({
"DataItem22": {
lzabel: "And other",
data: [[1408710276000, null],[1408710276000, 5]]
},
"DataItem23": {
lzabel: "And lastly",
data: [[1408710276000, null],[1408710276000, 1]]
},
});

每个对象都是相同的“类型”(如果重要的话)。

我想创建一个列表,但我没有这样做。我的努力是

var myDataSet = []; //this is the results of what I want, ideally as a single list

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

if (i==0) {
myDataSet.push(js_datasets[i]);
}
else {
myDataSet.concat(js_datasets[i]);//does nothing
myDataSet.join(js_datasets[i]);//does nothing
}

...more logic

正如您在上面看到的,我已经尝试使用 push , concatjoin .

如果我将代码更新为仅使用 push(并且从不使用 concat 和 join),那么我将获得我想要的所有值,但同样是作为数组中的数组。

使用 concat 和 join 不添加到列表中。

因此,如果我们可以假设数组(如图)中的 12 个项目都包含 10 个项目,我想要一个包含 120 个项目的列表!

我怎样才能简单地将这个多维数组(是不是多维)转换为一维数组。

最佳答案

这会有点复杂,因为数组 js_datasets 中的项目不是数组,而是更通用的对象。这意味着如果您尝试阅读它们,您不能假设这些键是有序的

让我们编写一些辅助函数来解决这个问题;

function dataItemCollectionToArray(o) {
var keys = Object.keys(o);
// assuming no non-DataItem keys, so next line commented out
// keys = keys.filter(function (e) {return e.indexOf("DataItem") === 0;});
keys.sort(function (a, b) { // ensure you will get the desired order
return +a.slice(8) - +b.slice(8);
});
return keys.map(function (e) {return o[e];});
}

现在您可以遍历 js_datasets 执行此转换

var myDataSet = [], i;
for (i = 0; i < js_datasets.length; ++i) {
// assuming no gaps, if you need to add gaps, also find min, max indices
// in `dataItemCollectionToArray`, and check them in each iteration here
myDataSet.push.apply(myDataSet, dataItemCollectionToArray(js_datasets[i]));
}

请注意Object.keysArray.prototype.map如果您希望支持旧浏览器,即 IE<=8

,则可能需要 polifills

然而,一个更简单的解决方案可能是重写 js_datasets 的构造方式,以便您推送对象更多< em>Array-like 或确实插入真正的 Arrays,也许有几个额外的属性,所以你知道第一个索引的偏移量。这意味着您可以使用可以在互联网上找到的flatten方法

关于javascript - 将数组合并为一个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25503558/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com