Array构造函数只带一个数字参数时(否则是作为填充),该参数会被作为数组的预设长度,而非填充一个元素,因此数组内是空单元

如果一个数组中存在一个空单元,即length的值大于实际单元数,这样的数组称为稀疏数组

var a = (new) Array(3) // 目前chrome返回[empty * 3], 之前好像是[undefined * 3]
// new可用可不用,不用的话内部会自动添加
var b = [undefined, undefined, undefined]
var c = []
c.length = 3 // 目前chrome返回[empty * 3], 之前好像是[undefined * 3]

就之前的返回值来看a,b,c很一致,但空单元与undefined并不相同

a.map(function(v,i){ return i; }); // 目前chrome返回[empty * 3], 之前是[undefined * 3]
b.map(function(v,i){ return i; }); // [0, 1, 2] var d = ['a', 'b', 'c', 'd']
delete d[1] d.map((item, index) => {
return {
item,
index,
}
})
// (4) [{item: "a", index: 0}, empty, {item: "c", index: 2}, {item: "d", index: 3}]

好在现在返回的是empty而非undefined,可以得到识别

然而某些方法如join在对待空单元的表现与undefiend一致

a.join('-'); // "--"
b.join('-'); // "--"
//实现参考如下
function fakeJoin(arr,connector) {
var str = "";
for (var i = 0; i < arr.length; i++) {
// 它主要考虑的是数组长度,这个是关键
if (i > 0) {
str += connector;
}
if (arr[i] !== undefined) {
str += arr[i];
}
}
return str;
}

想要填充undefined在数组中而非empty可以使用如下表达式

var arr = Array.apply(null, { length: 3 }) // [undefined, undefined, undefined]
// apply第二参数要求是数组或类数组(存在length属性)

ES6添加了Array.of()方法来初始化数组,在只填入一个参数的情况是作为数组的填充而非设置长度

var array1 = Array.of(3) //[3]
var array2 = Array.of(1,2,3) //[1,2,3] //模拟
function arrayOfLike() {
return [].slice.call(arguments)
// return [...arguments] ES6
}
// or
function arrayOfLike(...rest) { return rest }

数组空值empty的更多相关文章

  1. (转)Java 中关于String的空对象(null) ,空值(empty),空格

    原文出处:Java 中关于String的空对象(null) ,空值(empty),空格 定义 空对象: String s = null; 空对象是指定义一个对象s,但是没有给该对象分配空间,即没有实例 ...

  2. php利用array_filter()过滤数组空值

    利用array_filter过滤数组空值 <?php $array = array( 0 => '霜天部落', 1 => false, 2 => 1, 3 => null ...

  3. php过滤数组空值

    如果我们想过滤数组里面的空值,例如null,,false,' '等等,可以使用php自带的一个函数,使用起来非常方便简洁: //测试数据 $data = array( '0' => '测试内容1 ...

  4. PHP中删除数组空值的方法

    array_filter函数的功能是利用回调函数来对数组进行过滤,如果没有回调函数,那么默认就是删除数组中值为false的项目. 例如 $entry = array(                0 ...

  5. php 过滤掉多维数组空值

    //过滤掉空值 function filter_array($arr, $values = ['',[]]){ foreach ($arr as $k => $v) { if (is_array ...

  6. 使用Query 进行空值(empty)校验

    效果如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...

  7. 《利用python进行数据分析》读书笔记--第四章 numpy基础:数组和矢量计算

    http://www.cnblogs.com/batteryhp/p/5000104.html 第四章 Numpy基础:数组和矢量计算 第一部分:numpy的ndarray:一种多维数组对象 实话说, ...

  8. Numpy 学习之路(1)——数组的创建

    数组是Numpy操作的主要对象,也是python数据分析的主要对象,本系列文章是本人在学习Numpy中的笔记. 文章中以下都基于以下方式的numpy导入: import numpy as np fro ...

  9. JavaScript中清空数组的三种方式

    方式1,splice ? 1 2 3 var ary = [1,2,3,4]; ary.splice(0,ary.length); console.log(ary); // 输出 [],空数组,即被清 ...

随机推荐

  1. 如何修改 app.config 的配置信息

    如何修改 app.config 的配置信息 收藏 最问这个问题的人有点多,其实 .Net 提供了这样的功能我们可以在 app.config 中 userSettings 节点中保存我们的应用程序设置信 ...

  2. java#StringBuffer&StringBuilder

    StringBuffer A thread-safe, mutable sequence of characters. A string buffer is like a String, but ca ...

  3. 008.Delphi插件之QPlugins,服务的两种调用方法

    这个QPlugins自带的DEMO,大概的意思就是,创建2个服务类,程序启动的时候注册这2个服务类.点击不同的按钮,使用不同的方法来调用这个服务. 效果界面如下 unit Frm_Main; inte ...

  4. Dive into re Module in Python

    Dive into RE in Python Standard re module in python is powerful to handle text manipulation,such as ...

  5. pyhton pandas数据分析基础入门(一文看懂pandas)

    //2019.07.17 pyhton中pandas数据分析基础入门(一文看懂pandas), 教你迅速入门pandas数据分析模块(后面附有入门完整代码,可以直接拷贝运行,含有详细的代码注释,可以轻 ...

  6. Python中pandas透视表pivot_table功能详解(非常简单易懂)

    一文看懂pandas的透视表pivot_table 一.概述 1.1 什么是透视表? 透视表是一种可以对数据动态排布并且分类汇总的表格格式.或许大多数人都在Excel使用过数据透视表,也体会到它的强大 ...

  7. Django(八)模型:Mysql8.0日志文件配置开启/关闭、查询

    Mysql日志文件开启.配置.查看 mysql.log是mysql的日志文件,里面记录的对MySQL数据库的操作记录.默认情况下mysql的日志文件没有产生,需要修改mysql的配置文件,步骤如下: ...

  8. RadioButton之互斥选择和Toast显示

    前言: RadioButton用来单选并且用Toast来进行提示所选内容 RadioButton标签单独写的时候不能出现互斥现象,代码如下 <RadioButton android:layout ...

  9. Eclipse Unable to install breakpoint in XXX

    Eclipse  Unable to install breakpoint in  的问题, 到window-preferences-java-compiler下面 把Add line number  ...

  10. windows下java项目打包、启动批处理 .bat文件

    maven打包,脚本内容: @echo off echo 正在设置临时环境变量 set JAVA_HOME=C:\Program Files\Java\jdk1.6.0_45 set MAVEN_HO ...