如何在javascript中动态合并数组?
我想合并如下数组 var series=[{Name:“A”,Type:“SC”},{Name:“B”, 类型:“SC”},{Name:“C”,类型:“SC”},{Name:“D”, 类型:“SC”},{ColumnName:“Target”,类型:“Line”}{ ColumnName:“bar”,类型:“Line”}] 非常感谢您的帮助。如何在javascript中动态合并数组?,javascript,arrays,Javascript,Arrays,我想合并如下数组 var series=[{Name:“A”,Type:“SC”},{Name:“B”, 类型:“SC”},{Name:“C”,类型:“SC”},{Name:“D”, 类型:“SC”},{ColumnName:“Target”,类型:“Line”}{ ColumnName:“bar”,类型:“Line”}] 非常感谢您的帮助。 const输入=[ [{ 名称:“A”, 类型:“SC” }, { 名称:“B”, 类型:“SC” }, { 名称:“C”, 类型:“SC” }, { 名
const输入=[
[{
名称:“A”,
类型:“SC”
}, {
名称:“B”,
类型:“SC”
}, {
名称:“C”,
类型:“SC”
}, {
名称:“D”,
类型:“SC”
}],
{
专栏名称:“目标”,
类型:“行”
},
{
栏目名称:“酒吧”,
类型:“行”
}
];
常量输出=输入[0];
input.forEach((项目,i)=>{
如果(i>=1)输出推送(项目);
});
控制台日志(输出)代码>您可以尝试使用。减少
var series =
[
[{
Name: "A",
Type: "SC"
}, {
Name: "B",
Type: "SC"
}, {
Name: "C",
Type: "SC"
}, {
Name: "D",
Type: "SC"
}],
{
ColumnName: "Target",
Type: "Line"
},
{
ColumnName: "bar",
Type: "Line"
}
];
你可以这样做
series.reduce(
(x,y)=>{
return x.concat(y);
},[]
)
这是一个单行程序,它改变了原始数组,而不是创建一个新数组
console.clear();
常量输入=[
[{
名称:“A”,
类型:“SC”
}, {
名称:“B”,
类型:“SC”
}, {
名称:“C”,
类型:“SC”
}, {
名称:“D”,
类型:“SC”
}],
{
专栏名称:“目标”,
类型:“行”
},
{
栏目名称:“酒吧”,
类型:“行”
}
];
input.forEach((项,i)=>(数组的项实例)?input.push(…项)和input.splice(i,1):false)
控制台日志(输入)代码>这个简单的reduce怎么样
let newArr = [];
series.forEach((item) => {
newArr = newArr.concat(item);
});
series = newArr;
仅将数组的第一个元素与除第一个元素以外的所有元素连接起来:
var系列=
[
[{
名称:“A”,
类型:“SC”
}, {
名称:“B”,
类型:“SC”
}, {
名称:“C”,
类型:“SC”
}, {
名称:“D”,
类型:“SC”
}],
{
专栏名称:“目标”,
类型:“行”
},
{
栏目名称:“酒吧”,
类型:“行”
}
];
console.log(series[0].concat(series.slice(1));
//要将可能的二维数组展平为一维数组,请执行以下操作:
console.log(“展平:”);
console.log(
减少(
(全部,项目)=>全部混凝土(项目),
[]
)
);代码>JS有一种可以展平阵列的方法:
const series=[[{“Name”:“A”,“Type”:“SC”},{“Name”:“B”,“Type”:“SC”},{“Name”:“C”,“Type”:“SC”},{“Name”:“D”,“Type”:“SC”}],{“ColumnName”:“Target”,“Type”:“Line”},{“ColumnName”:“bar”,“Type”:“Line”}];
常数展平=级数.展平();
原木(扁平)代码>正确行话的可能重复将是展平一个数组,因为没有两个数组,所以不能合并两个数组。您可以选择将二维数组展平为一维数组。这基本上是series[0]。concat(series.slice(1))
简化函数可以是(all,item)=>all.concat(item)
,以展平(可能)二维数组。如果数组是x维的,你可以递归地减少(见我的答案)。使用concat会简单得多,并且不需要为每个元素检查累积数组series.reduce((all,item)=>all.concat(item),[])
如果你想展平一个x维数组,你可以使用reduce和递归(见我的答案)。是的,添加一个初始值,然后可以使用concatapplied@BoundForGlory-不客气,但请看更新的答案。哇,这更干净了。非常感谢
let newArr = [];
series.forEach((item) => {
newArr = newArr.concat(item);
});
series = newArr;
const orderedSeries = series.reduce((orderedAcum, elem) => [
...orderedAcum, ...(Array.isArray(elem) ? elem : [elem])
], []);