มีรายการอาร์เรย์ใน Javascript หรือไม่?


92

ฉันมีหลายสิ่งที่อยากจะเพิ่มลงในอาร์เรย์และฉันไม่รู้ว่าอาร์เรย์จะมีขนาดเท่าใด ฉันสามารถทำสิ่งที่คล้ายกับ c # arraylist ใน javascript และทำmyArray.Add(object);ซ้ำ ๆ ได้หรือไม่

คำตอบ:


145

เพียงใช้ array.push ();

var array = [];


array.push(value);

สิ่งนี้จะเพิ่มรายการอื่นเข้าไป

หากต้องการถอดออกให้ใช้ array.pop();

ลิงก์ไปยังอาร์เรย์ JavaScript: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array


ลิงก์ไม่สามารถใช้งานได้อีกต่อไป
sabsab

คุณสามารถเพิ่มข้อมูลได้มากเท่าที่คุณต้องการในอาร์เรย์ - arr.push (element1 [, ... [, elementN]]) - developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
CarlosZ

52

ไม่มี ArrayList ในจาวาสคริปต์

อย่างไรก็ตามมีArrayECMA 5.1ซึ่งมีการทำงานคล้ายกับ "ArrayList" ส่วนใหญ่ของคำตอบนี้จะนำคำต่อคำจากการแสดงผล HTML ของEcma-262 รุ่น 5.1, The ECMAScript ข้อมูลจำเพาะทางภาษา

อาร์เรย์ที่กำหนดมีวิธีการดังต่อไปนี้:

  • .toString ( )
  • .toLocaleString ( )
  • .concat ( [ item1 [ , item2 [ , … ] ] ] )
    เมื่อเมธอด concat ถูกเรียกโดยมีอาร์กิวเมนต์เป็นศูนย์หรือมากกว่า item1, item2 เป็นต้นจะส่งคืนอาร์เรย์ที่มีองค์ประกอบอาร์เรย์ของวัตถุตามด้วยองค์ประกอบอาร์เรย์ของแต่ละอาร์กิวเมนต์ตามลำดับ
  • .join (separator)
    องค์ประกอบของอาร์เรย์จะถูกแปลงเป็น Strings จากนั้นสตริงเหล่านี้จะเชื่อมต่อกันโดยคั่นด้วยการเกิดขึ้นของตัวคั่น หากไม่มีตัวคั่นจะใช้เครื่องหมายจุลภาคเดียวเป็นตัวคั่น
  • .pop ( )
    องค์ประกอบสุดท้ายของอาร์เรย์จะถูกลบออกจากอาร์เรย์และส่งคืน
  • .push ( [ item1 [ , item2 [ , … ] ] ] )
    อาร์กิวเมนต์จะต่อท้ายอาร์เรย์ตามลำดับที่ปรากฏ ความยาวใหม่ของอาร์เรย์จะถูกส่งกลับอันเป็นผลมาจากการโทร "
  • .reverse ( )
    องค์ประกอบของอาร์เรย์จะถูกจัดเรียงใหม่เพื่อให้กลับลำดับ วัตถุจะถูกส่งกลับอันเป็นผลมาจากการโทร
  • .shift ( )
    องค์ประกอบแรกของอาร์เรย์จะถูกลบออกจากอาร์เรย์และส่งคืน "
  • .slice (start, end)
    เมธอด slice ใช้อาร์กิวเมนต์สองตัวเริ่มต้นและสิ้นสุดและส่งคืนอาร์เรย์ที่มีองค์ประกอบของอาร์เรย์ตั้งแต่องค์ประกอบเริ่มต้นขึ้นไปจนถึง แต่ไม่รวมถึงจุดสิ้นสุดขององค์ประกอบ (หรือถึงจุดสิ้นสุดของอาร์เรย์หากไม่ได้กำหนดจุดสิ้นสุด)
  • .sort (comparefn)
    องค์ประกอบของอาร์เรย์นี้ถูกจัดเรียง การเรียงลำดับไม่จำเป็นต้องคงที่ (นั่นคือองค์ประกอบที่เปรียบเทียบเท่ากับไม่จำเป็นต้องอยู่ในลำดับเดิม) ถ้าไม่ได้กำหนด Comparefn ควรเป็นฟังก์ชันที่ยอมรับสองอาร์กิวเมนต์ x และ y และส่งกลับค่าเป็นลบถ้า x <y ศูนย์ถ้า x = y หรือค่าบวกถ้า x> y
  • .splice (start, deleteCount [ , item1 [ , item2 [ , … ] ] ] )
    เมื่อเมธอด splice ถูกเรียกโดยมีอาร์กิวเมนต์ตั้งแต่ 2 ตัวขึ้นไป deleteCount และ (optionally) item1, item2 เป็นต้นอิลิเมนต์ deleteCount ของอาร์เรย์ที่เริ่มต้นที่อาร์เรย์เริ่มต้นจะถูกแทนที่ด้วยอาร์กิวเมนต์ item1, item2 ฯลฯ อ็อบเจ็กต์ Array ที่มีองค์ประกอบที่ถูกลบ (ถ้ามี) จะถูกส่งกลับ
  • .unshift ( [ item1 [ , item2 [ , … ] ] ] )
    อาร์กิวเมนต์จะอยู่ข้างหน้าจุดเริ่มต้นของอาร์เรย์เพื่อให้ลำดับของอาร์เรย์ภายในอาร์เรย์เหมือนกับลำดับที่ปรากฏในรายการอาร์กิวเมนต์
  • .indexOf ( searchElement [ , fromIndex ] )
    indexOf เปรียบเทียบ searchElement กับองค์ประกอบของอาร์เรย์โดยเรียงลำดับจากน้อยไปมากโดยใช้อัลกอริธึมการเปรียบเทียบความเท่าเทียมกันอย่างเข้มงวดภายใน (11.9.6) และหากพบในตำแหน่งหนึ่งตำแหน่งขึ้นไปให้ส่งกลับดัชนีของตำแหน่งแรกดังกล่าว มิฉะนั้นจะส่งคืน -1
  • .lastIndexOf ( searchElement [ , fromIndex ] )
    lastIndexOf เปรียบเทียบ searchElement กับองค์ประกอบของอาร์เรย์โดยเรียงลำดับจากมากไปหาน้อยโดยใช้อัลกอริธึมการเปรียบเทียบความเท่าเทียมกันอย่างเข้มงวดภายใน (11.9.6) และหากพบในตำแหน่งหนึ่งตำแหน่งขึ้นไปให้ส่งกลับดัชนีของตำแหน่งสุดท้ายดังกล่าว มิฉะนั้นจะส่งคืน -1
  • .every ( callbackfn [ , thisArg ] )
    callbackfn ควรเป็นฟังก์ชันที่รับอาร์กิวเมนต์สามตัวและส่งคืนค่าที่บังคับได้กับค่าบูลีนจริงหรือเท็จ ทุกการเรียกใช้ callbackfn หนึ่งครั้งสำหรับแต่ละองค์ประกอบที่มีอยู่ในอาร์เรย์โดยเรียงลำดับจากน้อยไปมากจนกว่าจะพบรายการที่ callbackfn ส่งกลับเท็จ หากพบองค์ประกอบดังกล่าวทุกรายการจะคืนค่าเป็นเท็จทันที มิฉะนั้นหาก callbackfn ส่งคืนเป็นจริงสำหรับองค์ประกอบทั้งหมดทุกรายการจะคืนค่าเป็นจริง
  • .some ( callbackfn [ , thisArg ] )
    callbackfn ควรเป็นฟังก์ชันที่รับอาร์กิวเมนต์สามตัวและส่งคืนค่าที่บังคับได้กับค่าบูลีนจริงหรือเท็จ การเรียกใช้ callbackfn บางครั้งสำหรับแต่ละองค์ประกอบที่มีอยู่ในอาร์เรย์โดยเรียงลำดับจากน้อยไปหามากจนกว่าจะพบรายการที่ callbackfn ส่งกลับจริง หากพบองค์ประกอบดังกล่าวบางส่วนจะคืนค่าจริงทันที มิฉะนั้นบางรายการจะแสดงผลเท็จ
  • .forEach ( callbackfn [ , thisArg ] )
    callbackfn ควรเป็นฟังก์ชันที่ยอมรับสามอาร์กิวเมนต์ forEach เรียก callbackfn หนึ่งครั้งสำหรับแต่ละองค์ประกอบที่มีอยู่ในอาร์เรย์โดยเรียงลำดับจากน้อยไปมาก
  • .map ( callbackfn [ , thisArg ] )
    callbackfn ควรเป็นฟังก์ชันที่ยอมรับสามอาร์กิวเมนต์ map เรียก callbackfn หนึ่งครั้งสำหรับแต่ละองค์ประกอบในอาร์เรย์เรียงลำดับจากน้อยไปหามากและสร้าง Array ใหม่จากผลลัพธ์
  • .filter ( callbackfn [ , thisArg ] )
    callbackfn ควรเป็นฟังก์ชันที่รับอาร์กิวเมนต์สามตัวและส่งคืนค่าที่บังคับได้กับค่าบูลีนจริงหรือเท็จ กรองการเรียก callbackfn หนึ่งครั้งสำหรับแต่ละองค์ประกอบในอาร์เรย์โดยเรียงลำดับจากน้อยไปหามากและสร้างอาร์เรย์ใหม่ของค่าทั้งหมดที่ callbackfn ส่งกลับจริง
  • .reduce ( callbackfn [ , initialValue ] )
    callbackfn ควรเป็นฟังก์ชันที่รับสี่อาร์กิวเมนต์ ลดการเรียกการเรียกกลับเป็นฟังก์ชันหนึ่งครั้งสำหรับแต่ละองค์ประกอบที่มีอยู่ในอาร์เรย์โดยเรียงลำดับจากน้อยไปมาก
  • .reduceRight ( callbackfn [ , initialValue ] )
    callbackfn ควรเป็นฟังก์ชันที่รับสี่อาร์กิวเมนต์ ReduceRight เรียกการเรียกกลับเป็นฟังก์ชันหนึ่งครั้งสำหรับแต่ละองค์ประกอบที่มีอยู่ในอาร์เรย์ตามลำดับจากมากไปหาน้อย

และยังเป็นสถานที่ให้บริการยาว


23

ด้วยจาวาสคริปต์อาร์เรย์ทั้งหมดมีความยืดหยุ่น คุณสามารถทำสิ่งต่อไปนี้:

var myArray = [];

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

ฉันรักคุณแม้ว่าฉันจะไม่รู้จักคุณจริงๆ
sabsab

14

อาร์เรย์ค่อนข้างยืดหยุ่นใน JS คุณสามารถทำได้:

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

คุณไม่สามารถลบองค์ประกอบเฉพาะได้อย่างง่ายดาย
Jacob Sánchez

แน่นอนว่าคุณสามารถ: เอาองค์ประกอบที่array.splice(index, 1) index
countunique

7

คุณไม่จำเป็นต้องผลักดันคุณสามารถทำสิ่งนี้ได้ -

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

A[A.length]=50;

5

javascript ใช้อาร์เรย์แบบไดนามิกโดยไม่จำเป็นต้องประกาศขนาดล่วงหน้า

คุณสามารถผลักและเปลี่ยนเป็นอาร์เรย์ได้หลายครั้งตามที่คุณต้องการจาวาสคริปต์จะจัดการการจัดสรรและสิ่งต่างๆ


3

ในสคริปต์ Java คุณประกาศอาร์เรย์ดังนี้:

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

และสำหรับ arraylist หรือ object หรือ array คุณต้องใช้ json; และทำให้เป็นอนุกรมโดยใช้ json โดยใช้รหัสต่อไปนี้:

 var serializedMyObj = JSON.stringify(myObj);

สวัสดีขอบคุณที่ให้ข้อมูลเพิ่มเติม การทำให้อนุกรม Json ช่วยได้จริงๆ
Prakash

1

ใช้push()วิธีการอาร์เรย์จาวาสคริปต์จะเพิ่มวัตถุที่กำหนดในส่วนท้ายของอาร์เรย์ JS Arrays ค่อนข้างยืดหยุ่นคุณสามารถผลักดันวัตถุได้มากเท่าที่คุณต้องการในอาร์เรย์โดยไม่ต้องระบุความยาวล่วงหน้า นอกจากนี้ยังสามารถผลักวัตถุประเภทต่างๆไปยัง Array เดียวกันได้


0

เพียงแค่ใช้array.push(something);. อาร์เรย์ Javascript เป็นเหมือน ArrayLists ในแง่นี้ - สามารถปฏิบัติได้เหมือนกับว่ามีความยาวที่ยืดหยุ่นได้ (ไม่เหมือนกับอาร์เรย์ 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>

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.