javascriptarray(javascript的数组)

本文目录
- javascript的数组
- javascript如何把一个随机产生的数组(10个元素)储存到一个变量中
- JavaScript里Array中有个isArray方法,这个方法的位置在哪,是构造函数吗,还是原型对象中
- Array和ArrayList有何区别
- JavaScript中利用Array filter() 方法压缩稀疏数组
- list与arraylist 区别
- javaScript中数组的定义方法
- javascript如何编写一个函数让其跟数组array的pop()方法执行效果一样
- javascript怎样用array来实现每次input就加上一项东西啊
javascript的数组
在回答这个问题之前,需要题主能明白一个知识,在JavaScript中,除了5种原始数据类型之外,其他所有的都是对象,包括函数(Function)。
5种原始数据类型:
number
boolean
string
null
undefined
在这个前提下,咱们再来讨论JavaScript的对象。
1、创建对象
var obj = {};
这种方式创建对象,被称之为对象直接量(Object Literal),意思很简单,就是直接声明一个没有任何属性的对象,使用对象直接量来创建对象是JavaScript中最常用的一种手法。
除了使用直接量创建之外,还可以使用构造函数 Object() 创建对象
var obj = new Object(); // 创建一个空对象,和{}一样
更多创建对象的知识,参见《JavaScript权威指南(第6版)》第6章。
2、创建数组
var arr = ;
这是使用数组直接量(Array Literal)创建数组。除了上面这种方式之外,还可以使用 构造函数Array() 创建数组对象:
var arr = new Array();
更多创建数组的知识,参见《JavaScript权威指南(第6版)》第7章。
3、对象与数组的关系
在说区别之前,需要先提到另外一个知识,就是JavaScript的原型继承。所有JavaScript的内置构造函数都是继承自 Object.prototype。在这个前提下,可以理解为使用 new Array() 或 创建出来的数组对象,都会拥有 Object.prototype 的属性值。
对于题主的问题意味着:
// 拥有Object.prototype的属性值
var obj = {};
// 使用数组直接量创建的数组,由于Array.prototype的属性继承自 Object.prototype,
// 那么,它将同时拥有Array.prototype和Object.prototype的属性值
var arr = ;
因为,这个问题不是分析JavaScript原型链的概念,我就不展开说了,推荐题主阅读几篇文章,在回答的最后面,我会给出文章的链接。
通过这一节可以得到对象和数组的第一个区别:对象没有数组Array.prototype的属性值
4、什么是数组?
数组具有一个最基本特征:索引,这是对象所没有的,下面来看一段代码:
var obj = {};
var arr = ;
obj = ’a’;
arr = ’a’;
console.log(obj); // 输出 a
console.log(arr); // 输出 a
console.log(obj.length); // 输出 undefined
console.log(arr.length); // 输出 3
通过上面这个测试,可以看到,虽然 obj 都输出’a’,但是,在输出length上有明显的差异,这是为什么呢?
obj的区别
obj输出’a’,是因为对象就是普通的键值对存取数据
而arr之所以输出’a’,是因为数组arr索引2的位置已经存储了数据
obj.length与arr.length的区别
obj.length并不具有数组的特性,并且obj没有保存属性length,那么自然就会输出undefined
而对于数组来说,length是数组的一个内置属性,数组会根据索引长度来更改length的值。
为什么arr.length输出3,而不是1呢?
这是由于数组的特殊实现机制,对于普通的数组,如果它的索引是从0开始连续的,那么length的值就会等于数组中元素个数
而对于上面例子中arr,在给数组添加元素时,并没有按照连续的索引添加,所以导致数组的索引不连续,那么就导致索引长度大于元素个数,那么我们称之为稀疏数组。
有关稀疏数组的特性就不再讨论更多,参见《JavaScript权威指南(第6版)》7.3节。
5、伪数组
从外观上看伪数组,看不出来它与数组的区别,在JavaScript内置对象中常见的伪数组就是大名鼎鼎的auguments:
(function() {
console.log(typeof arguments); // 输出 object,它并不是一个数组
}());
另外在DOM对象中,childNodes也是伪数组
console.log(typeof document.body.childNodes); // 输出 object
除此之外,还有很多常用的伪数组,就不一一列举。
伪数组存在的意义,是可以让普通的对象也能正常使用数组的很多算法,比如:
var arr = Array.prototype.slice.call(arguments, 0); // 将arguments对象转换成一个真正的数组
Array.prototype.forEach.call(arguments, function(v) {
// 循环arguments对象
});
更多关于伪数组的知识,参见《JavaScript权威指南(第6版)》7.11节。
6、总结
对象没有数组Array.prototype的属性值,类型是Object,而数组类型是Array;
数组是基于索引的实现,length会自动更新,而对象是键值对;
使用对象可以创建伪数组,伪数组可以正常使用数组的大部分方法;
***隐藏网址***
***隐藏网址***
***隐藏网址***
***隐藏网址***
***隐藏网址***
javascript如何把一个随机产生的数组(10个元素)储存到一个变量中
随机替换位置就行了,先初始化数组,之后进行对数组中元素的位置进行随机交换就行了。
var
array=;
for(var
i=1;i《=18;i++)
array=i;
for(var
i=0;i《array.length;i++){
var
r=parseint(math.random()*array.length);
var
v=array=v;
}
原理类似。
JavaScript里Array中有个isArray方法,这个方法的位置在哪,是构造函数吗,还是原型对象中
前面两个回答都有问题,isArray 是 JavaScript 原生方法,且是在 ES5.1 规范中定义的。
Array 的实例没有 isArray 这个方法,所以它不存在于 Array 的原型链中也不是在构造函数内部定义的。它是 Array 类的静态方法,只能通过 Array.isArray 调用。从技术上来讲,它应该是定义为 Array 类构造函数的方法(函数也是对象,可以拥有属性和方法)。使用 Object.getOwnPropertyNames(Array) 可以查看 Array 的所有此类方法和属性。
你可以这样验证:Array.hasOwnProperty(’isArray’)
它返回 true。
Array和ArrayList有何区别
【答案】:Array可以容纳基本类型和对象,而ArrayList只能容纳对象。
Array是指定大小的,而ArrayList大小是固定的。
Array没有提供ArrayList那么多功能,比如addAll、removeAll和iterator等。尽管ArrayList明显是更好的选择,但也有些时候Array比较好用。
JavaScript中利用Array filter() 方法压缩稀疏数组
什么是稀疏数组
数组元素的索引不一定要连续的,它们之间可以有空缺。每个javaScript数组都有一个length属性。针对非稀疏数组,该属性就是数组元素的个数;针对稀疏数组,length比所有元素的个数要大。
Array
filter()
方法会跳过稀疏数组中缺少的元素,它的返回数组总是稠密的。
(1)压缩稀疏数组的空缺:
var
dense
=
sparse.filter(
function(currentValue)
{
return
true;
}
);
(2)压缩稀疏数组的空缺,并且删除
undefined
和
null
元素:
var
dense
=
sparse.filter(
function(currentValue)
{
return
currentValue
!==
undefined
&&
currentValue!=
null;
}
)
总结
以上所述是小编给大家介绍的JavaScript中利用Array
filter()
方法压缩稀疏数组,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
您可能感兴趣的文章:javascript稀疏数组(sparse
array)和密集数组用法分析JavaScript中的稀疏数组与密集数组
list与arraylist 区别
List和ArrayList的区别在于:
1、在编程语言中ArrayList类是.Net Framework提供的用于数据存储和检索的专用类。List 类可以简单视之为双向连结串行,以线性列的方式管理物件集合。List类是ArrayList类的泛型等效类。
2、ArrayList继承了IList接口,所以它可以很方便的进行数据的添加,插入和移除。List的大部分用法都与ArrayList相似,List类也继承了IList接口。
3、在ArrayList中可以插入不同类型的数据。ArrayList会把所有插入其中的数据都当作为object类型来处理,这其中存在装箱与拆箱的操作,会对系统造成性能上的损耗。而List需要声明其数据的对象类型。声明后插入其他类型数据,IDE就会报错,且不能通过编译。
4、在使用ArrayList中的数据来处理问题的时候,很可能会报类型不匹配的错误,即ArrayList不是类型安全的。而List已经声明过其数据的对象类型,是类型安全的,避免了前面讲的类型安全问题与装箱拆箱的性能问题。
5、ListArray就可以被构造。而List不能被构造,但可以为List创建一个引用。
扩展资料:
一、List泛型
通过允许指定泛型类或方法操作的特定类型,泛型功能将类型安全的任务从程序员转移给了编译器。不需要编写代码来检测数据类型是否正确,因为会在编译时强制使用正确的数据类型。减少了类型强制转换的需要和运行时错误的可能性。泛型提供了类型安全但没有增加多个实现的开销。
二、装箱与拆箱的概念:
1、装箱:就是将值类型的数据打包到引用类型的实例中 比如将int类型的值123赋给object对象o
int i=123; object o=(object)i;
2、拆箱:就是从引用数据中提取值类型 比如将object对象o的值赋给int类型的变量i
object o=123; int i=(int)o;
3、装箱与拆箱的过程是很损耗性能的。
javaScript中数组的定义方法
定义数组
数组对象用来在单独的变量名中存储一系列的值。
我们使用关键词 new 来创建数组对象。下面的代码定义了一个名为 arr 的数组对象:
var arr = new Array();
有两种向数组赋值的方法(你可以添加任意多的值,就像你可以定义你需要的任意多的变量一样)。
1:
var mycars=new Array();
mycars="Saab";
mycars="Volvo";
mycars="BMW";
也可以使用一个整数自变量来控制数组的容量:
var mycars=new Array(3);
mycars="Saab";
mycars="Volvo";
mycars="BMW";
2:
var mycars=new Array("Saab","Volvo","BMW");
-------------------------------------------------------------------------------------
或者用数组字面量(直接量)方便的创建数组。一个数组字面量是在一对方括号中包裹着一个或多个用 逗号 隔开的表达式。并且数组中的每个值都有索引。从0开始。
var empty = ;
var cars=;
empty //undefined
cars //’Volvo’
javascript如何编写一个函数让其跟数组array的pop()方法执行效果一样
Array.prototype.popLike = function () {
var last = this;
delete this;
--this.length;
return last;
};
var arr = ;
console.log(arr.pop());
console.log(arr);
var arr1 = ;
console.log(arr1.popLike());
console.log(arr1);
javascript怎样用array来实现每次input就加上一项东西啊
《script》
var goods = new Array(), // 保存商品的数组
counter = 0; // 商品数目
function addList() {
var o = document.getElementById(’add’);
// 没有输入商品
if (o.value.length == 0) {
alert(’please enter an item!’);
return false;
}
goods.push(o.value); // 添加商品到数组
counter++; // 商品数目加一
show();
}
function resetList() {
counter = 0; // resets the "counter" to zero
goods.length = 0; // resets the array by reinitializing the array
show();
}
// 页面处理
function show() {
document.getElementById(’add’).setAttribute(’value’, ’’); // 清空输入
document.getElementById(’number’).setAttribute(’value’, counter); // 页面显示商品数目
document.getElementById(’item’).setAttribute(’value’, goods); // 页面显示商品
}
function remove() {
goods.pop(); // removes the last item on your list
if (counter != 0) counter--; // updates the counter
show();
}
function sortlist() {
goods.sort(); // sorts the list alphabetically from A to Z
show();
}
function reverselist() {
goods.reverse(); // sorts the list alphabetically from Z to A
show();
}
《/script》
《h3》My Shopping List《/h3》
《div》Enter an item to add in your list:
《input type="text" name="add" value=""/》
《/div》
《div》《input type="button" name="submit" value="Add to my List" onclick="addList()"/》
《input type="button" name="reset" value="reset" onclick="resetList()"/》
《/div》
Number of items in your list:
《input type="text" name="number" value="0"/》
《div》《b》Items you need to buy at the store:《/b》《/div》《br》
《input type="text" name="item" value="" style="width:450px;"/》
《div》
《input type="button" name="remove" value="remove" onclick="remove()"/》
《input type="button" name="" value="sortlist" onclick="sortlist()"/》
《input type="button" name="reset" value="reverselist" onclick="reverselist()"/》
《/div》

本文相关文章:
javascript网络编程(关于javascript网络编程操作多媒体的是否可以替代很多flash的效果)
2026年10月2日 16:00
javascript array length(javascript如何取数组长度)
2026年9月11日 06:50
jsp中写java代码(jsp中javascript中能写java代码吗)
2026年7月31日 08:10
parent是js的关键字吗(下列不是javascript关键字的有() A with B parent C class D void)
2026年6月21日 11:00
更多文章:
form表单制作(为什么制作的form表单会在网页显示中多出一行)
2026年10月11日 09:10
teammate(teammate,company,partner)
2026年10月11日 06:10
javascript arraybuffer(javascript可以把base64编码转换成二进制代码吗求示例代码!)
2026年10月11日 04:00
text函数公式(excel中round和text函数的区别是什么)
2026年10月11日 03:50
google chrome打不开(chrome浏览器打不开怎么回事 浏览器打不开的处理方法)
2026年10月11日 02:00
websocket整合springboot(Springboot整合Websocket遇到的坑)
2026年10月11日 01:40
drawerlayout(android 怎样让drawerlayout设置的侧滑菜单的内容充满屏幕)
2026年10月10日 19:20
xor四位数怎么运算(单片机怎样用C语言实现4个数字间的异或)
2026年10月10日 17:50


