在Javascript中有一个arraylist吗?

107

我有很多东西要添加到一个数组中,而且事先不知道数组的大小。我能否像C#的ArrayList一样在JavaScript中做些类似的操作,并通过myArray.Add(object);重复执行?

10个回答

163

该链接已不再可用。 - sabsab
你可以在数组中添加任意数量的数据 - arr.push(element1[, ...[, elementN]]) - https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/push - CarlosZ

58

JavaScript中没有ArrayList。

然而,ArrayECMA 5.1具有类似于“ArrayList”的功能。本答案的大部分内容直接摘自Ecma-262 Edition 5.1, The ECMAScript Language Specification的HTML呈现。

定义的数组有以下可用方法:

  • .toString() - 将数组转换为字符串并返回。
  • .toLocaleString() - 将数组转换为本地化的字符串并返回。
  • .concat([item1[, item2[, …]]]) - 当使用零个或多个参数item1,item2等调用concat方法时,它返回一个数组,该数组包含对象的数组元素,后跟每个参数的数组元素。
  • .join(separator) - 将数组的元素转换为字符串,并将这些字符串连接起来,由分隔符分隔。如果未提供分隔符,则使用单个逗号作为分隔符。
  • .pop() - 从数组中删除并返回最后一个元素。
  • .push([item1[, item2[, …]]]) - 将参数按出现顺序附加到数组的末尾。调用的结果是新数组的长度。
  • .reverse() - 重新排列数组的元素以反转它们的顺序。该对象作为调用的结果返回。
  • .shift() - 从数组中删除并返回第一个元素。
  • .slice(start, end) - slice方法接受两个参数start和end,并返回一个数组,其中包含从元素start到(但不包括)元素end的数组元素(如果end未定义,则直到数组的末尾)。
  • .sort(comparefn) - 对此数组的元素进行排序。排序不一定稳定(即,相等的元素不一定保留其原始顺序)。如果comparefn未定义,则它应该是一个函数,它接受两个参数x和y,并返回负值(如果x < y),零(如果x = y)或正值(如果x > y)。
  • .splice(start, deleteCount[, item1[, item2[, …]]]) - 当使用两个或多个参数start,deleteCount和(可选的)item1,item2等调用splice方法时,将替换数组索引start开始的deleteCount个元素为参数item1,item2等。返回一个包含已删除元素(如果有)的Array对象。
  • .unshift([item1[, item2[, …]]]) - 将参数前置到数组的开头,使它们在数组中的顺序与它们在参数列表中出现的顺序相同。
  • .indexOf(searchElement[, fromIndex]) - indexOf将searchElement与数组的元素按升序比较,使用内部的Strict Equality Comparison Algorithm(11.9.6),如果在一个或多个位置找到,则返回第一个位置的索引;否则,返回-1。
  • .lastIndexOf(searchElement[, fromIndex]) - lastIndexOf将searchElement与数组的元素按降序比较,使用内部的Strict Equality Comparison Algorithm(11.9.6),如果在一个或多个位置找到,则返回最后一个位置的索引;否则,返回-1。
  • .every(callbackfn[, thisArg]) - callbackfn应该是一个接受三个参数并返回可强制转换为布尔值true或false的函数。对于数组中存在的每个元素,every以升序调用一次callbackfn,直到找到其中一个callbackfn返回false的元素。如果找到这样的元素,则every立即返回false。否则,如果callbackfn对所有元素都返回true,则every将返回true。
  • .some(callbackfn[, thisArg]) - callbackfn应该是一个

    还有length property


25

使用 JavaScript,所有数组都是灵活的。 您可以简单地执行以下操作:

var myArray = [];

myArray.push(object);
myArray.push(anotherObject);
// ...

1
我爱你,即使我并不真正了解你。 - sabsab

14

在 JavaScript 中,数组非常灵活,您可以执行以下操作:

var myArray = new Array();
myArray.push("string 1");
myArray.push("string 2");

你不能轻易地删除一个特定的元素。 - Jacob Sánchez
当然可以:array.splice(index, 1) 可以移除在 index 处的元素。 - countunique

8
您甚至不需要使用push,您可以像这样做 -
var A=[10,20,30,40];

A[A.length]=50;

7

JavaScript使用动态数组,不需要事先声明大小。

您可以随意向数组中添加元素,JavaScript运行时会自动处理内存分配和垃圾回收。


3
在JavaScript中,您可以按以下方式声明数组:
var array=[];
array.push();

对于ArrayList、Object或Array,您需要使用JSON进行转换; 使用以下代码将其序列化为JSON:

 var serializedMyObj = JSON.stringify(myObj);

嘿,感谢您提供额外的信息。那个Json序列化确实很有帮助。 - Prakash

2

试试这个,也许可以帮助你,它可以做你想要的事情:

ListArray

var listArray = new ListArray();
let element = {name: 'Edy', age: 27, country: "Brazil"};
let element2 = {name: 'Marcus', age: 27, country: "Brazil"};
listArray.push(element);
listArray.push(element2);

console.log(listArray.array)
<script src="https://marcusvi200.github.io/list-array/script/ListArray.js"></script>


1
使用JavaScript数组push()方法,它将给定对象添加到数组的末尾。JS数组非常灵活,您可以在不事先指定其长度的情况下将任意数量的对象推送到数组中。此外,不同类型的对象可以推送到同一数组中。

0

只需使用 array.push(something);。在这方面,JavaScript 数组就像 ArrayLists - 它们可以像具有灵活长度 (与 Java 数组不同) 的数组一样处理。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接