Javascript 如何切片子数组?

Javascript 如何切片子数组?,javascript,arrays,slice,Javascript,Arrays,Slice,在本例中,我首先切片一个数组。成功了。然后我试着切分一个由.children组成的数组,但没有成功。在这样一个例子中,我怎样才能得到一半的孩子 var arr=[“一”、“二”、“三”、“四”、“五”、“六”、“七”、“八”]; 控制台日志(arr.slice(4)) var childs=document.getElementById(“容器”).childs; console.log(childs) console.log(childs.slice(4)) 未受影响 未受影响 未受影响

在本例中,我首先切片一个数组。成功了。然后我试着切分一个由.children组成的数组,但没有成功。在这样一个例子中,我怎样才能得到一半的孩子

var arr=[“一”、“二”、“三”、“四”、“五”、“六”、“七”、“八”];
控制台日志(arr.slice(4))
var childs=document.getElementById(“容器”).childs;
console.log(childs)
console.log(childs.slice(4))

未受影响

未受影响

未受影响

未受影响

矫揉造作

矫揉造作

矫揉造作

矫揉造作

var arr=[“一”、“二”、“三”、“四”、“五”、“六”、“七”、“八”];
控制台日志(arr.slice(4))
var childs=Array.from(document.getElementById(“容器”).childs);
控制台日志(childs);
console.log(childs.slice(4))

未受影响

未受影响

未受影响

未受影响

矫揉造作

矫揉造作

矫揉造作

矫揉造作


不能直接删除,因为它们是Html元素

用这个代替,或者按照Md Johirul Islam的建议去做

document.getElementById(“容器”).removeChild(childs[4])

是的,DOM节点不是数组,因此如果您想使用它们,您需要定义自己的函数来实现。例如,可以定义切片函数:

function slice(list, start, end) {
    var result = []
    for (var i = start; i < end; i++) {
        result.push(list[i])
    }
    return result
}
在我看来,这样的“助手”方法很少应该单独创建,除非您绝对确定将对DOM节点列表进行足够的切片,这样可以节省技术负载。对我来说,这些“助手”函数带来了一种认知负载,这种负载只有在更大的框架(如Ramda.js等)中才有意义。我的意思是,在您正在使用或开发的框架中

您可以尝试查看其中一个功能框架,看看它是否对您有意义。例如,Ramda.js已经有了一个切片方法,可以对DOM节点或任何其他类似数组的对象进行切片:

R.slice(0, 5, document.getElementById("container").children)

slice
Array
方法,但可用于:

console.log([].slice.call(container.children,2))
console.log([].slice.bind(container.children)(2))
console.log([].slice.apply(container.children,[2]))

一,

二,

三,

四,


Dom节点不是数组,而是一个集合。。但是您可以先使用
Array.from
var childs=Array.from(document.getElementById(“container”).childs)
children
的结果是
HTMLCollection
不是一个数组,您可能希望将其更改为
HTMLCollection
var childs=Array.from(document.getElementById(“container”).children)`其余的结果应该相同。还要注意,
Array.from
在IE上不可用,因此您可能需要一个polyfill来实际删除DOM中的元素,而不仅仅是“Array”是的,我理解这一点。这就是为什么我说按照约翰·伊斯拉姆博士的建议去做,或者把它从DOM中删除
R.slice(0, 5, document.getElementById("container").children)