Javascript 如何使用.splice()方法仅将对象从数组复制到另一个数组?

Javascript 如何使用.splice()方法仅将对象从数组复制到另一个数组?,javascript,jquery,arrays,array-splice,Javascript,Jquery,Arrays,Array Splice,我有一个如下所示的数组,并使用.localeCompare方法对其进行排序。 排序完成后,我希望提升数组中具有子项的那些项 有关代码,请参阅此JSFIDLE: 为了实现这一点,我尝试对有子项的项进行切片,然后将其复制到一个新数组中,然后将其推到顶部的同一数组中。(我尝试使用.splice、.unshift),但在输出中,它复制了第一个参数中的完整数组,而不是作为对象 var CQTemplates = []; var newData = data.filter(function(item,i){

我有一个如下所示的数组,并使用
.localeCompare
方法对其进行排序。 排序完成后,我希望提升数组中具有
子项的那些项

有关代码,请参阅此JSFIDLE:

为了实现这一点,我尝试对有子项的项进行切片,然后将其复制到一个新数组中,然后将其推到顶部的同一数组中。(我尝试使用.splice、.unshift),但在输出中,它复制了第一个参数中的完整数组,而不是作为对象

var CQTemplates = [];
var newData = data.filter(function(item,i){

    if(item.children){
    var removeAt = data.indexOf(item);
     var CQTemplateCodeItem = data.slice(removeAt, removeAt+1);
     pushAt = CQTemplates.length;
     CQTemplates[pushAt] = CQTemplateCodeItem[0];

  } 
   return item.children == undefined;  
})
预期输出是这样的

Array [
  "itemsWithChildifAny? - sorted",  
  "itemsWithChildifAny? - sorted",
  "Item - sorted",
  "Item - sorted",
  "Item - sorted"
]

您正在尝试分离有子对象和无子对象的对象。你可以试试这个

使用ForEach 使用过滤器 输出将类似于


快乐编码

我的朋友,splice()方法在哪里?你可以不用splice()方法来实现它,我也可以用splice()来实现。但问题是,我们是否需要这样做?既然QA说他需要一个拼接(),试着用他需要的回答他,我们知道在编程中,我们可以用数百万的directions@user123456谢谢你的回答。这实际上是为了达到目的。正如@sivaragala所提到的,如果我要通过.splice()来求解,那么我在代码中遗漏了什么或做错了什么来实现这一点呢?“排序完成后,我想提升数组中那些子项为true的项”-不要。马上把它们分类到正确的地方!
Array [
  "itemsWithChildifAny? - sorted",  
  "itemsWithChildifAny? - sorted",
  "Item - sorted",
  "Item - sorted",
  "Item - sorted"
]
var CQTemplates = [];
let withChildren = [];
let withoutChildren = [];
data.forEach(function(item){
  if(item.children){
    withChildren.push(item);
  }  else {
    withoutChildren.push(item);
  }  
})
var withoutChildren = [];
var withChildren = data.filter(function(item,i){
    if(!item.children){
    withoutChildren.push(item);
    return false;
  }
  return true;
})

console.log('Combined array', [...withChildren, ...withoutChildren]);