JavaScript的slice方法是什么?

4

我想将一个数组的元素切片成一个新的左右两个数组。但我不知道如何开始。


6
一分钟内W3Schools提供了三个答案,这个世界怎么了? :) - Šime Vidas
让我们不要在这里提及该网站的名称 :) - fazo
5
但是让我们把这个名字带到这里:W3 Fools - Šime Vidas
6个回答

4
你需要从"slice"方法开始。请注意,它返回一个新数组而不更改旧数组,因此您需要返回并改变旧数组。
例如:
var a = [1,2,3,4,5],
    b = a.slice(3);

a.length = 3;
// a is now [1,2,3]
// b is now [4,5]

你注意到原始数组不会改变,但是在你的例子中却显示它已经改变了? - jondavidjohn
是的,只有三行代码,你可以自己试试看。=) - Chris Nielsen
2
第三行代码(a.length = 3)改变了原始数组。 - Chris Nielsen
1
啊,你手动设置了长度,没注意到,以为你说a.length是3。 - jondavidjohn

2

嗯...... 你看过.slice()了吗?

new_array = your_array.slice( start_index , end_index );

这将创建一个全新的数组,而不是引用。


2

考虑以下数组:

var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

如果你想将数组分割成左侧数组包含前4个项目,右侧数组包含其余项目,则可以这样做:
var leftArr = arr.slice(0, 4);

并且

var rightArr = arr.slice(4);

您可以编写一个函数,基于分割位置返回这两个数组:
function splitArr(arr, i) {
    return [ arr.slice(0, i), arr.slice(i) ];
}

1
我会使用 splice
var a=[1,2,3,4,5,6];

var b=a.splice(3,a.length);


now a= [1,2,3]
and b=[4,5,6]

只需要 var b = a.splice(3); 就可以了,第二个参数不需要。 - Šime Vidas
@Šime Vidas- 这就是我想的,直到我在IE中尝试了它。 IE(9版本之前)对数组不做任何操作,并返回一个空数组,没有第二个参数。 - kennebec
你说得对。这很奇怪。微软自己的参考文献指出第二个参数是可选的。顺便说一下,我还查了一下旧的ECMAScript规范(1999年的ES3)- 同样的情况。这个特性很老了,我不知道为什么Microsoft直到IE9才实现它。 - Šime Vidas

0

来自 http://www.w3schools.com/jsref/jsref_slice_array.asp :

语法:

array.slice(start, end)

例子:

<script type="text/javascript">
  var fruits = ["Banana", "Orange", "Apple", "Mango"];
  document.write(fruits.slice(0,1) + "<br />");
  document.write(fruits.slice(1) + "<br />");
  document.write(fruits.slice(-2) + "<br />");
  document.write(fruits);
</script>

输出:

Banana
Orange,Apple,Mango
Apple,Mango
Banana,Orange,Apple,Mango

0
<html>
<body>

<script type="text/javascript">

var fruits = ["Banana", "Orange", "Apple", "Mango"];
document.write(fruits.slice(0,1) + "<br />"); //Banana
document.write(fruits.slice(1) + "<br />"); //Orange,Apple,Mango
document.write(fruits.slice(-2) + "<br />"); //Apple,Mango
document.write(fruits); //Banana,Orange,Apple,Mango

</script>

</body>
</html>

(引用自w3schools):

http://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_slice_array


(注:该内容与编程有关)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接