Javascript中有一个arraylist吗?


92

我有一堆要添加到数组中的东西,但我不知道数组的大小会是多少。我可以做一些类似于javascript中的c#arraylist的事情,并在上面myArray.Add(object);重复做吗?

Answers:



51

JavaScript中没有ArrayList。

但是,存在ArrayECMA 5.1,其功能类似于“ ArrayList”。该答案的大部分内容是从Ecma-262 Edition 5.1(ECMAScript语言规范)的HTML渲染中逐字取得的。

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

  • .toString ( )
  • .toLocaleString ( )
  • .concat ( [ item1 [ , item2 [ , … ] ] ] )
    当使用零个或多个参数item1,item2等调用concat方法时,它将返回一个数组,该数组包含对象的数组元素,然后依次排列每个参数的数组元素。
  • .join (separator)
    数组的元素将转换为String,然后将这些String连接起来,并通过出现分隔符将其分隔开。如果未提供分隔符,则使用单个逗号作为分隔符。
  • .pop ( )
    数组的最后一个元素从数组中删除并返回。
  • .push ( [ item1 [ , item2 [ , … ] ] ] )
    参数以它们出现的顺序附加到数组的末尾。调用的结果将返回数组的新长度。”
  • .reverse ( )
    重新排列数组的元素,以便颠倒其顺序。该对象作为调用的结果返回。
  • .shift ( )
    数组的第一个元素从数组中删除并返回。”
  • .slice (start, end)
    slice方法采用开始和结束两个参数,并返回一个数组,该数组包含从元素开始到(但不包括)元素结束(如果未定义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使用内部严格相等比较算法(11.9.6)按升序将searchElement与数组的元素进行比较,如果在一个或多个位置找到,则返回第一个此类位置的索引;否则,返回-1。
  • .lastIndexOf ( searchElement [ , fromIndex ] )
    lastIndexOf使用内部严格相等比较算法(11.9.6)按降序将searchElement与数组的元素进行比较,如果在一个或多个位置找到,则返回最后一个这样的位置的索引;否则,返回-1。
  • .every ( callbackfn [ , thisArg ] )
    callbackfn应该是一个接受三个参数并返回可强制转换为布尔值true或false的值的函数。每个函数对数组中存在的每个元素以升序调用一次,直到找到其中callbackfn返回false的元素为止。如果找到这样的元素,则每个元素立即返回false。否则,如果callbackfn对所有元素都返回true,则每个元素都将返回true。
  • .some ( callbackfn [ , thisArg ] )
    callbackfn应该是一个接受三个参数并返回可强制转换为布尔值true或false的值的函数。有些人对数组中存在的每个元素以升序调用一次,直到找到其中callbackfn返回true的元素为止。如果找到这样的元素,则某些元素立即返回true。否则,一些返回false。
  • .forEach ( callbackfn [ , thisArg ] )
    callbackfn应该是一个接受三个参数的函数。forEach对数组中存在的每个元素按升序调用一次callbackfn。
  • .map ( callbackfn [ , thisArg ] )
    callbackfn应该是一个接受三个参数的函数。map对数组中的每个元素按升序调用一次callbackfn,然后从结果中构造一个新的Array。
  • .filter ( callbackfn [ , thisArg ] )
    callbackfn应该是一个接受三个参数并返回可强制转换为布尔值true或false的值的函数。filter对数组中的每个元素按升序调用一次callbackfn,并构造一个由callbackfn返回true的所有值组成的新数组。
  • .reduce ( callbackfn [ , initialValue ] )
    callbackfn应该是一个带有四个参数的函数。reduce对数组中存在的每个元素按升序调用一次作为函数的回调。
  • .reduceRight ( callbackfn [ , initialValue ] )
    callbackfn应该是一个带有四个参数的函数。reduceRight函数以降序方式对数组中存在的每个元素调用一次回调(作为函数)。

还有length属性


22

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

var myArray = [];

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

我爱你,即使我并不真正认识你。
sabsab

14

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

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

但是,您不能轻易删除特定元素
JacobSánchez

7

您甚至不需要推动,您可以执行以下操作-

var A=[10,20,30,40];

A[A.length]=50;

5

javascript使用动态数组,无需事先声明大小

您可以根据需要多次推送和移动到数组,javascript将为您处理分配和操作


3

在Java脚本中,您声明数组如下:

var array=[];
array.push();

对于arraylist或对象或数组,您必须使用json; 并使用以下代码使用json将其序列化:

 var serializedMyObj = JSON.stringify(myObj);

嘿,谢谢您提供其他信息。Json序列化确实有帮助
Prakash

1

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


0

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


0

试试这个,也许可以帮上忙,它可以做您想要的:

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>

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.