js数组没有上届

--如果你用大于或等于当前length的数字作为下标来存储一个元素,那么length会被增大以容纳新元素,不会发生数组越界。

数组也是对象

--可以添加属性。a["name"]="sjr",但是length 不变。length属性是这个数组的最大整数属性名加上1。设置length的值,设置更大不会给数组分配更多的空间,设置更小会移除多余元素。

--可以用for in 来遍历一个数组的所有属性。但是for in 无法保证属性的顺序。此外,可能从原型链中得到意外属性的问题依然存在。常规的for循环可以避免这些问题。

--对象没有length属性。

--使用数组还是对象:当属性名是小而连续的整数时,使用数组。否则,使用对象。

--区分数组和对象:js没有一个好的机制来区别数组和对象。我们可以自己对象isArray来弥补这个缺陷。

  var isArray = function(value){
return value && typeof value === 'object' && value.constructor === Array;
} 遗憾的是,它在识别从不同的窗口(window)或帧(frame)里构造的数组时会失败。有一个更好的方式去判断一个对象是否为数组。
全兼容滴 var isArray = function(value){
return Object.prototype.toString.apply(value) === '[object Array]';
}

--给数组添加方法

   Function.prototype.method = function(name,func){
if(!this.prototype[name]){
this.prototype[name] = func;
}
return this;
};
Array.method = function(f,value){
var i;
for(i = 0; i < this.length; i += 1){
value = f(this[i], value);
}
return value;
}
var add=function(a,b){
return a+b;}
var a=[1,2,3]
a.reduce(add,5)
//11

数组其实就是对象,我们可以直接给一个单独的数组添加方法。

  data.total = function(){
return this.reduce(add, 0);
}
total = data.total()

因为'total'不是整数,所以给数组增加一个total属性不会改变它的length。当属性名是整数时,数组才是最有用的,但它们依旧是对象,并且对象可以接受任何字符串作为属性名。

给数组指定初始值

--一维数组:JS数组不会预置值,如果你用[]得到一个新数组,它将是空的。元素是undefined。如果你实现的算法是假设每个元素都从一个已知的元素开始(例如0),那么你必须自己准备好这个数组。

  Array.dim = function(demi,value){
var a = [];
for(var i = 0; i < demi; i++){
a[i] = value
}
return a;
}
Array.dim(10,0);

--二维数组:为了创建一个二维数组或者数组的数组,你必须自己去创建那个第二维的数组:

  for(i = 0; i < n; i++){
my_array[i] = []
}
Array.matrix = function(m, n, initial){
var a = [],mat = [];
for(var i = 0; i < m; i++){
for(var j = 0; j < n; j++){
mat[j] = initial;
}
a[i] = mat;
}
return a;
}
Array.matrix(2,3,0);
//或者用dim去写
Array.matrix = function(m,n,initial){
var a = [];
for(var i = 0; i < m; i++){
a[i] = Array.dim(n,initial);
}
return a;
};

Array--Good parts的更多相关文章

  1. Rotate Array 解答

    Question Rotate an array of n elements to the right by k steps. For example, with n = 7 and k = 3, t ...

  2. [Algorithm] Array production problem

    Given an array of integers, return a new array such that each element at index i of the new array is ...

  3. [算法]Rotate Array

    You may have been using Java for a while. Do you think a simple Java array question can be a challen ...

  4. PHP的学习--解析URL

    PHP中有两个方法可以用来解析URL,分别是parse_url和parse_str. parse_url 解析 URL,返回其组成部分 mixed parse_url ( string $url [, ...

  5. Yii2 ActiveForm表单自定义样式

    实例: <?php $form = ActiveForm::begin([ 'fieldConfig' => [ 'template' => '<div class=" ...

  6. [Swift]LeetCode65. 有效数字 | Valid Number

    Validate if a given string is numeric. Some examples:"0" => true" 0.1 " => ...

  7. 【php】php目录路径函数系列

    在写框架和项目时候我们经常要获取绝对路径,php有内置函数realpath(),  也可以写个函数来实现这个功能 function getAbsolutePath($path) { $path = s ...

  8. GeSHi Documentation

    GeSHi Documentation Version 1.0.8.11 Authors: © 2004 - 2007 Nigel McNie © 2007 - 2012 Benny Baumann ...

  9. MTCNN 实现人脸识别

    MTCNN(Multi-task CNN) MTCNN难点 WIDER FACE等数据集为我们提供的图片并不是MTCNN支持的训练样本, 需要通过几个脚本将其转为MTCNN可以接受的数据集, 这些脚本 ...

  10. 「暑期训练」「Brute Force」 Money Transfers (CFR353D2C)

    题目 分析 这个Rnd353真是神仙题层出不穷啊,大力脑筋急转弯- - 不过问题也在我思维江化上.思考任何一种算法都得有一个“锚点”,就是说最笨的方法怎么办.为什么要这么思考,因为这样思考最符合我们的 ...

随机推荐

  1. SPY++的使用

    百度百科Spy++ 使用的是VS2010.net自带的功能,可以从开始菜单中打开.

  2. uva 11752 - The Super Powers

    这个题   任意一个数,他的幂只要不是质数则可以分解成两个数的乘   判断有没有溺出  i×i  则用最大的那个数 Max/i < i 吗 #include<iostream> #i ...

  3. 在ACCESS中创建数据库和查询(ACCESS 2000)

    备份还原数据库 备份.还原 —— 复制\粘贴 压缩修复数据库命令 —— 复制该文件并重新组织,并重新组织文件在磁盘上的储存方式.压缩同时优化了Access数据库的性能.(工具——实用数据库工具或者工具 ...

  4. socket 基础知识

    PHP使用Berkley的socket库来创建它的连接.socket只不过是一个数据结构.你使用这个socket数据结构去开始一个客户端和服务器之间的会话.这个服务器是一直在监听准备产生一个新的会话. ...

  5. 项目管理及自动构建工具Maven

    项目管理及自动构建工具Maven 一.Maven安装.目录结构.cmd命令1.下载安装apache-maven-3.2.3-bin.zip下载:http://maven.apache.org/down ...

  6. 【LeetCode】107 - Binary Tree Level Order Traversal II

    Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from left ...

  7. Package inputenc Error: Unicode char \u8: not set up for use with LaTeX.

    用TexStudio编辑文档时,不知是多加了空格还是啥,总是提示如下错误: Package inputenc Error: Unicode char \u8: not set up for use w ...

  8. Objective-C开发图书推荐

    日本Objective-C圣经级教材:Objective-C编程全解(第3版) 作      者 [日] 荻原刚志 著:唐璐,翟俊杰 译 出 版 社 人民邮电出版社 出版时间 2015-01-01 版 ...

  9. HTML的<head>中的内容总结

    [01]文件头部一般包含标题标签.<meta>标签.内联样式表及预定义脚本等. [02]<meta>标签在网页内容中不显示,但它的作用不容忽视.<meta>标签主要 ...

  10. URAL-1989 Subpalindromes 多项式Hash+树状数组

    题目链接:http://acm.timus.ru/problem.aspx?space=1&num=1989 题意:给出一个字符串,m个操作:1,修改其中一个字符串,2,询问 [a, b] 是 ...