slice()函数创建一个slice对象

Posted 大家猴啊

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了slice()函数创建一个slice对象相关的知识,希望对你有一定的参考价值。

slice()函数创建一个slice对象,该对象可用于对字符串,列表,元组等进行切片。
slice对象用于切片给定的序列(字符串,字节,元组,列表或范围)或任何支持序列协议的对象(实现__getitem__()和__len__()方法)。

slice 语法:
class slice(stop)
class slice(start, stop[, step])

my_slice = slice(5)
my_slice2 = slice(2, 10, 2)
arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(arr[my_slice])  # [0, 1, 2, 3, 4]
print(arr[my_slice2])  # [2, 4, 6, 8]
print(my_slice.start,my_slice.stop,my_slice.step)
print(my_slice2.start,my_slice2.stop,my_slice2.step)

###### 0123456789012345678901234567890123456789012345678901234567890\'
record = \'....................100 .......513.25 ..........\'
# cost = int(record[20:23]) * float(record[31:37])
SHARES = slice(20, 23)
PRICE = slice(31, 37)
cost = int(record[SHARES]) * float(record[PRICE])
print(cost)

  

Array.prototype.slice.call()

MDN中对于Array.prototype.slice.()的介绍中,提到了类数组对象。以下是原文:

slice 方法可以用来将一个类数组(Array-like)对象/集合转换成一个新数组。你只需将该方法绑定到这个对象上。 一个函数中的 arguments 就是一个类数组对象的例子。

function list() 
  return Array.prototype.slice.call(arguments);


var list1 = list(1, 2, 3); // [1, 2, 3]

除了使用 Array.prototype.slice.call(arguments),你也可以简单的使用 [].slice.call(arguments) 来代替。

所以arguments并不是真正的数组对象,只是与数组类似而已,所以它并没有slice这个方法,而Array.prototype.slice.call(arguments, 1)可以理解成是让arguments转换成一个数组对象,让arguments具有slice()方法。

同理可知,我们可以给Array.prototype.slice.call(arguments)加上第二个参数。

function list() 
  return Array.prototype.slice.call(arguments, 1);


var list2 = list(4, 5, 6);
list2; //[5, 6]
转载自:https://www.cnblogs.com/xingteng/p/9878523.html

以上是关于slice()函数创建一个slice对象的主要内容,如果未能解决你的问题,请参考以下文章

关于在函数中使用Array.prototype.slice.call而不是直接用slice

Array.prototype.slice.call()

将函数的实际参数转换成数组的方法,习惯用Array.prototype.slice.call(arguments)

slice,Array.prototype.slice,Array.protyotype.slice.call

js Array.prototype.slice.call(arguments,0) 理解

笔记js Array.prototype.slice.call(arguments) 将函数的参数转换为数组方法的见解