一、.clear() →Array

function clear() {
this.length = 0;
return this;
}

  返回清除item的空数组。

  例子:

var fruits = ['Apple', 'Orange', 'Bananas', 'peach'];
fruits.clear();
// -> []
fruits
// -> []

  

二、.clone() →Array

  function clone() {
return slice.call(this, 0);
}

  返回数组的副本,保持原始数组不变。

三、.compact() →Array

  function compact() {
return this.select(function(value) {
return value != null;
});
}

  返回一个副本,不包含null和undefined

  例子:

var orig = [undefined, 'A', undefined, 'B', null, 'C'];
var copy = orig.compact();
// orig -> [undefined, 'A', undefined, 'B', null, 'C'];
// copy -> ['A', 'B', 'C'];

  四、Every([iterator = Prototype.K[, context]]) → Boolean

  • iterator (Function) - 一个可选函数,用于评估枚举中的每个元素; 该函数应该返回值来测试。如果没有提供,则测试元素本身。
  • context (Object) - this在对迭代器的调用中使用的可选对象。

  确定是否所有元素都是真实的(boolean-equivalent true),直接或通过提供的迭代器计算。(这一块我还不能很好理解)

 function every(iterator) {
if (this == null) throw new TypeError();
iterator = iterator || Prototype.K;
var context = arguments[1];
var object = Object(this);
for (var i = 0, length = object.length >>> 0; i < length; i++) {
if (i in object && !iterator.call(context, object[i], i, object)) {
return false;
}
}
return true;
}
if (arrayProto.every) {
every = wrapNative(Array.prototype.every);
}

  五、.filter(iterator[, context]) →Array

  • iterator (Function) - 用于测试元素的迭代器函数。
  • context (Object) - this在对迭代器的调用中使用的可选对象。

  返回包含此数组中所有项目的新数组,其中 iterator返回了一个真值。

 function filter(iterator) {
if (this == null || !Object.isFunction(iterator))
throw new TypeError(); var object = Object(this);
var results = [], context = arguments[1], value; for (var i = 0, length = object.length >>> 0; i < length; i++) {
if (i in object) {
value = object[i];
if (iterator.call(context, value, i, object)) {
results.push(value);
}
}
}
return results;
} if (arrayProto.filter) {
// `Array#filter` requires an iterator by nature, so we don't need to
// wrap it.
filter = Array.prototype.filter;
}

  六、.first()

  function first() {
return this[0];
}

  返回数组的第一个项目(例如,array[0])。

  七、.flatten()  →Array

function flatten() {
return this.inject([], function(array, value) {
if (Object.isArray(value))
return array.concat(value.flatten());
array.push(value);
return array;
});
}

  个人理解:合并指定数组内的所有数组。

  官方理解:

  返回数组的平坦(一维)副本,保持原始数组不变。嵌套数组以递归方式内联注入。

  常用在处理递归收集算法的结果。

  例子:

var a = [ ' frank ',[ ' bob ',' lisa ' ],[ ' jill ',[ ' tom ',' sally ' ]]];
var b = a.flatten();
// a - > ['frank',['bob','lisa'],['jill',['tom','sally']]]
// b - > ['frank','bob', 'lisa','jill','tom','sally']

  八、.indexOf(item[, offser = 0]) →Number

 function indexOf(item, i) {
if (this == null) throw new TypeError(); var array = Object(this), length = array.length >>> 0;
if (length === 0) return -1; // The rules for the `fromIndex` argument are tricky. Let's follow the
// spec line-by-line.
i = Number(i);
if (isNaN(i)) {
i = 0;
} else if (i !== 0 && isFinite(i)) {
// Equivalent to ES5's `ToInteger` operation.
i = (i > 0 ? 1 : -1) * Math.floor(Math.abs(i));
} // If the search index is greater than the length of the array,
// return -1.
if (i > length) return -1; // If the search index is negative, take its absolute value, subtract it
// from the length, and make that the new search index. If it's still
// negative, make it 0.
var k = i >= 0 ? i : Math.max(length - Math.abs(i), 0);
for (; k < length; k++)
if (k in array && array[k] === item) return k;
return -1;
}

  官方理解:

  • item?) - 可能存在或不存在于数组中的值。
  • offsetNumber) - 开始搜索前要跳过的初始项目数。

 返回item数组中第一次出现的索引,或者-1如果item不存在于数组中。Array#indexOf使用绝对等于(===)比较项目。

  个人理解:返回item在数组中首次出现的位置的索引,因为区分了使用了绝对等于所以区分大小写,类型。

  例子:

[3, 5, 6, 1, 20].indexOf(1)
// -> 3
[3, 5, 6, 1, 20].indexOf(90)
// -> -1 (not found)
['1', '2', '3'].indexOf(1);
// -> -1 (not found, 1 !== '1')

  加一个不是Array的例子:

var str="Hello world!"
document.write(str.indexOf("Hello") + "<br />")
document.write(str.indexOf("World") + "<br />")
document.write(str.indexOf("world"))
// ->0
// ->-1
// ->6

  九、.inspect() →String

function inspect() {
return '[' + this.map(Object.inspect).join(', ') + ']';
}

  返回数组的面向调试的字符串表示形式。

  例子:

['Apples', {good: 'yes', bad: 'no'}, 3, 34].inspect()
// -> "['Apples', [object Object], 3, 34]"

  十、.intersect(array) →Array

  function intersect(array) {
return this.uniq().findAll(function(item) {
return array.indexOf(item) !== -1;
});
}

  返回包含在两个给定数组之间相同的每个项目的数组。

  十一、.last() →

  function last() {
return this[this.length - 1];
}

  返回数组的第一个项目(例如,array[array.lenth-1])。

   十二、.lastIndexOf(item[, offset])  →Number

  • item (?) - 可能存在或不存在于数组中的值。
  • offset (Number) - 开始搜索前在结尾跳过的项目数。

  返回最后一次出现的位置item在阵列中-或者-1,如果item没有在数组中存在。

  function lastIndexOf(item, i) {
if (this == null) throw new TypeError(); var array = Object(this), length = array.length >>> 0;
if (length === 0) return -1; if (!Object.isUndefined(i)) {
i = Number(i);
if (isNaN(i)) {
i = 0;
} else if (i !== 0 && isFinite(i)) {
// Equivalent to ES5's `ToInteger` operation.
i = (i > 0 ? 1 : -1) * Math.floor(Math.abs(i));
}
} else {
i = length;
} //如果fromIndex为正值,则将其限制为数组中的最后一个索引;
//如果它是负数,则从数组长度中减去其绝对值。
var k = i >= 0 ? Math.min(i, length - 1) :
length - Math.abs(i); //如果他依然是负数,则它将完全绕过这个循环返回-1
for (; k >= 0; k--)
if (k in array && array[k] === item) return k;
return -1;
}

  十三、.map([iterator = Prototype.K[, context]])  →Array

  • iterator (Function) - 要应用于枚举中每个元素的迭代器函数。
  • context (Object) - this在对迭代器的调用中使用的可选对象。

  返回应用于iterator数组中每个项目的结果。如果没有提供迭代器,则将这些元素简单地复制到返回的数组中。

 
  function map(iterator) {
if (this == null) throw new TypeError();
iterator = iterator || Prototype.K; var object = Object(this);
var results = [], context = arguments[1], n = 0; for (var i = 0, length = object.length >>> 0; i < length; i++) {
if (i in object) {
results[n] = iterator.call(context, object[i], i, object);
}
n++;
}
results.length = n;
return results;
} if (arrayProto.map) {
map = wrapNative(Array.prototype.map);
}

  十四、reverse([inline = true])  →Array

  • inline (Boolean) - 是否修改数组。默认为true。克隆原始数组时false
 function reverse(inline) {
return (inline === false ? this.toArray() : this)._reverse();
}

  例子:

         // Making a copy
var nums = [3, 5, 6, 1, 20];
var rev = nums.reverse(false);
// nums -> [3, 5, 6, 1, 20]
// rev -> [20, 1, 6, 5, 3] // Working inline
var nums = [3, 5, 6, 1, 20];
nums.reverse();
// nums -> [20, 1, 6, 5, 3]

  十五、.Size()   →Number 

  function size() {
return this.length;
}

  返回数组的长度。

  十六、toArray() → Array

  function clone() {
return slice.call(this, 0);
}

  别名 .clone()

  十七、.uniq()

  function uniq(sorted) {
return this.inject([], function(array, value, index) {
if (0 == index || (sorted ? array.last() != value : !array.include(value)))
array.push(value);
return array;
});
}
  • sorted (Boolean) - 数组是否已被排序。如果true使用成本较低的算法。

  生成一个数组的重复版本。如果没有找到重复项,则返回原始数组。

  在大型阵列时sortedfalse,这种方法有一个潜在很大的性能代价。

  例子:

     [1, 3, 2, 1].uniq();
// -> [1, 2, 3]
['A', 'a'].uniq();
// -> ['A', 'a'] (because String comparison is case-sensitive)

  十八、.without(value[, value...])   → Array

  function without() {
var values = slice.call(arguments, 0);
return this.select(function(value) {
return !values.include(value);
});
}
  • value (?) - 要排除的值。

生成不包含任何指定值的数组的新版本,保持原始数组不变。

  例子:

[3, 5, 6].without(3)
// -> [5, 6]
[3, 5, 6, 20].without(20, 6)
// -> [3, 5]

Array方面Js底层代码学习记录的更多相关文章

  1. Node.js权威指南学习记录

    学习nodeJS权威指南的学习记录 导航: 1.console模块 2.全局变量 3.Buffer对象 4.事件对象 5.网络请求 6.文件操作对象 一. COMMON.js的学习.(commonJS ...

  2. 动态调试smali代码学习记录

    预备知识 DDMS Dalvik Debug Monitor Serivce,Dalvik调试监控服务,为Android SDK提供的一款拥有监控Dalvik虚拟机的调试软件,启动文件位于<An ...

  3. JS继续学习记录(一)

    JS继续学习记录(一) 总感觉自己的js code写的还算可以,但是又深知好像只知道一些皮毛,所以打算仔细记录一下js晋级学习过程,日日往复 先记录一下自己目前对js的了解吧(20180828) js ...

  4. SpringMVC学习系列-后记 结合SpringMVC和Hibernate-validator,根据后台验证规则自动生成前台的js验证代码

    在SpringMVC学习系列(6) 之 数据验证中我们已经学习了如何结合Hibernate-validator进行后台的数据合法性验证,但是通常来说后台验证只是第二道保险,为了更好的用户体验会现在前端 ...

  5. D3.js学习记录【转】【新】

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. 我的three.js学习记录(一)

    在之前因为项目需要使用WebGL技术做网页应用,但是苦于自己没有接触,只是使用过OpenGL.然后接触到了thre.js这个第三方库之后我突然心情很愉快,这将节省我很多时间. 过了这个项目之后,就再也 ...

  7. 我的three.js学习记录(二)

    通过上一篇文章我的three.js学习记录(一)基本上是入门了three.js,但是这不够3D,这次我希望能把之前做的demo弄出来,然后通过例子来分析操作步骤. 1. 示例 上图是之前做的一个dem ...

  8. 我的three.js学习记录(三)

    此次的亮点不是three.js的3d部分,而是通过调用摄像头然后通过摄像头的图像变化进行简单的判断后进行一些操作.上篇中我通过简单的示例分析来学习three.js,这次是通过上一篇的一些代码来与摄像头 ...

  9. JAVAEE——BOS物流项目02:学习计划、动态添加选项卡、ztree、项目底层代码构建

    1 学习计划 1.jQuery easyUI中动态添加选项卡 2.jquery ztree插件使用 n 下载ztree n 基于标准json数据构造ztree n 基于简单json数据构造ztree( ...

随机推荐

  1. 笔记:Maven 生命周期与命令行详解

    Maven 拥有三套相互独立的生命周期,分别是 clean.default和site,clean 生命周期的目的是清理项目,default 生命周期的目的是构建项目,而site生命周期的目的是建立项目 ...

  2. gulp和webpack之间的区别

    webpack 是一个打包工具 webpack 是用来把你的源文件打包成一个文件的,你做了一系列配置以后,可以用一句 webpack 实现打包的功能. webpack的作用是从若干个文件开始顺藤摸瓜, ...

  3. 【Python】 用户图形界面GUI wxpython III 更多组件

    wxpython - 更多组件 我写到的这些组件可能一来不是很详细,二来不是最全的,想要更好地用这些组件,应该还是去看看教程和别的示例.比较简单的,推荐http://download.csdn.net ...

  4. CAS 之 Apereo CAS 简介(一)

    CAS 之 Apereo CAS 简介(一) Background(背景) 随着公司业务的不断扩展,后台接入子系统不断增多,那么我们将针对不同的平台进行拆分为各自对应的子系统, 权限是不变的,那么我们 ...

  5. input输入框限制输入正整数、小数、字母、文字

    有的时候需要限制input的输入格式: 例如,输入大于0的正整数 <input onkeyup="if(this.value.length==1){this.value=this.va ...

  6. (译文)学习ES6非常棒的特性——Async / Await函数

    try/catch 在使用Async/Await前,我们可能这样写: const main = (paramsA, paramsB, paramsC, done) => { funcA(para ...

  7. 【R语言系列】作图入门示例一

    假设有如下数据,我们使用plot函数作图 月龄 体重 月龄 体重  1 4.4 9 7.3 3 5.3 3 6.0 5 7.2 9 10.4 2 5.2 12 10.2 11 8.5 3 6.1 R语 ...

  8. Struts2——第一个helloworld页面

    struts2是一个较为成熟的mvc框架,先看看怎么配置struts2并且产生helloworld页面. 首先从官网下载struts2,http://struts.apache.org/downloa ...

  9. JavaScript(第十九天)【DOM进阶】

    学习要点: 1.DOM类型 2.DOM扩展 3.DOM操作内容 DOM自身存在很多类型,在DOM基础课程中大部分都有所接触,比如Element类型:表示的是元素节点,再比如Text类型:表示的是文本节 ...

  10. 新手使用mac上的textedit写HTML时遇到的问题及解决办法

    刚开始在mac上学习HTML,总结一下遇到的问题和解决办法 问题:使用textedit编写html,在网页上却仍然显示的是代码. 解决办法: 打开textedit后打开文本编辑 选择偏好设置 按如图所 ...