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]);