Javascript 将数组合并到单个数组中
如果这是.NET,我会问如何转换Javascript 将数组合并到单个数组中,javascript,arrays,Javascript,Arrays,如果这是.NET,我会问如何转换List这将有点复杂,因为数组js_数据集中的项不是数组,而是更通用的对象。这意味着,如果您试图读取这些键,就不能假定它们是有序的 让我们编写一些帮助函数来解释这一点 function dataItemCollectionToArray(o) { var keys = Object.keys(o); // assuming no non-DataItem keys, so next line commented out // keys =
List这将有点复杂,因为数组js_数据集中的项不是数组,而是更通用的对象。这意味着,如果您试图读取这些键,就不能假定它们是有序的
让我们编写一些帮助函数来解释这一点
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_数据集
执行此转换
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]));
}
var myDataSet=[],i;
对于(i=0;i
请注意,如果您希望支持旧的浏览器,则可能需要重新填充,即IEconcat
不会修改任何内容,但会返回一个新数组@Bergi从问题中的图片上看,数组中的项目看起来不像是真正的数组(这意味着平坦问题中的答案在这里实际上不起作用)@PaulS。你可能是对的(Dave,请澄清一下,以JSON的形式发布你的输入,我会重新打开),但这意味着concat
等无论如何都无法工作,我们需要某种自定义的迭代机制。我根本不会对键排序,根据定义,它们是无序的,所以它们也可以保持这种状态—只需扩展一个对象和所有键即可。排序时,您需要使用自定义比较函数来避免<代码> DATAITEM100R/COD>在代码> > DATAITEM999 /代码> @贝尔吉之前排序,谢谢,我没有考虑排序问题。
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];});
}
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]));
}