JQuery এ তালিকার উপাদান সামগ্রীর একটি অ্যারে পান


101

আমার মতো কাঠামো আছে:

<ul>
  <li>text1</li>
  <li>text2</li>
  <li>text3</li>
</ul>

অ্যারে হিসাবে পাঠ্য পেতে আমি কীভাবে জাভাস্ক্রিপ্ট বা jQuery ব্যবহার করব?

['text1', 'text2', 'text3']

এর পরে আমার পরিকল্পনাটি এটি সম্ভবত একটি স্ট্রিংয়ে একত্রিত করা, সম্ভবত ব্যবহার করে .join(', ')এবং এটির মতো বিন্যাসে পেতে:

'"text1", "text2", "text3"'

উত্তর:


141
var optionTexts = [];
$("ul li").each(function() { optionTexts.push($(this).text()) });

... কৌতুক করা উচিত। আপনি যে চূড়ান্ত আউটপুটটি সন্ধান করছেন তা পেতে, join()কিছু সংক্ষেপণ খুব ভালভাবে করবে:

var quotedCSV = '"' + optionTexts.join('", "') + '"';

2
JQuery কোয়েরি দ্বারা ফিরে উপাদানসমূহ একটি আদেশ গ্যারান্টি আছে? আমি ধরে নেব যে অর্ডার ফেরত দেওয়া হয়েছে এটি ডিওএমের আদেশের সমান (যেমন পাঠ্য 1, পাঠ্য 2, পাঠ্য 3) তবে এটি সত্য কিনা তা নথিভুক্তিতে কী সন্ধান করতে হবে তা আমি জানি না।
স্টাইলে

2
আমি কখনই এটি ডিওএমকে অন্য কোনওভাবে পড়তে দেখিনি যে সাধারণ পাঠের ক্রম। যদিও আমি এটি প্রমাণ করতে পারছি না, আমি খামারে বাজি ধরব যে এটি ডওমের শীর্ষে নীচে চলে গেছে :)
ফ্ল্যাটার

$ .এইচ খারাপ অভিনয় আছে বলে মনে করা হয় না? যদি হ্যাঁ, এটি করার অন্য কোনও উপায় আছে?
ড্যানিয়েল

আপনার কাছে কতগুলি তালিকার আইটেম রয়েছে যে এটি একটি সমস্যা, @ ড্যানিয়েল? হ্যাঁ, একই জিনিসটি করার অন্যান্য উপায় রয়েছে (আপনি একবারে অ্যারে তৈরি করতে use .map () ব্যবহার করতে পারেন), তবে সেগুলি একই জিনিস to
শোগ 9

@ শোগ ৯: আমি একটি টেবিলের প্রতিটি সারি থেকে দুটি পৃথক কলাম থেকে মান নিয়ে তালিকার একটি অভিধানে চাপ দিতে চাই। এটি করার সহজ উপায় নেই? আগাম ধন্যবাদ.
ln2khanal

71

অনর্থক মধ্যবর্তী অ্যারে ছাড়াই:

arr = $('li').map(function(i,el) {
    return $(el).text();
}).get();

Jsfiddle ডেমো দেখুন


6
আপনি .get()শেষ মিস ।
ফেলিক্স ক্লিং

4
ফেলিক্স কলিংসের পরামর্শের ভিত্তিতে: আরার = $ ('লি') map মানচিত্র (ফাংশন () {রিটার্ন $ (এটি)। পাঠ্য ();})। পান ();
এমিল স্টেনস্ট্রোম

1
"ফাংশন পান" কেন প্রয়োজনীয় তা আমি বুঝতে পারি না।
crsuarezf

1
api.jquery.com/map ব্যাখ্যা করে কেন একটি .get () প্রয়োজন আছে ("যেহেতু রিটার্ন মান একটি jQuery- মোড়ানো অ্যারে, তাই) () প্রত্যাবর্তিত অবজেক্টটি বেসিক অ্যারে দিয়ে কাজ করা খুব সাধারণ বিষয়" ")।
কিট্টো

3
সবচেয়ে খারাপটি হচ্ছে, পুনরুক্তিকারীটি ভুল, আপনাকে উপাদান এবং সূচকটি স্যুইচ করতে হবে, যাতে এটি ফাংশন বলে (i, এল)।
কিট্টো

14

এবং পরিষ্কার জাভাস্ক্রিপ্টে:

var texts = [], lis = document.getElementsByTagName("li");
for(var i=0, im=lis.length; im>i; i++)
  texts.push(lis[i].firstChild.nodeValue);

alert(texts);

14

কিমস্টিক খুব কাছে ছিল, তবে বেশ নয়।

এটি একটি সুবিধাজনক ওয়ান-লাইনারে কীভাবে করবেন তা এখানে:

$.map( $('li'), function (element) { return $(element).text() });

এখানে jQuery এর মানচিত্রের ফাংশনের সম্পূর্ণ ডকুমেন্টেশন রয়েছে, এটি বেশ সহজ: http://api.jquery.com/jQuery.map/

কেবল সম্পূর্ণরূপে উত্তর দেওয়ার জন্য, আপনি যা খুঁজছিলেন তার সম্পূর্ণ কার্যকারিতা এখানে:

$.map( $('li'), function (element) { return $(element).text() }).join(', ');

আমি শুধু এই এখানে দেখেছি ( stackoverflow.com/questions/4856283/... ) এবং পুনরায় পোস্ট করুন করত ছিল যেহেতু এটি একটি মহান কৌতুক জানেন যে এর
SeanDowney

আমার পথটি কিছুটা দ্রুত হওয়া উচিত .. না?
kimstik

1
কিমান্তিক, বেঞ্চমার্ক.জেএস অনুসারে, আমার ফাংশন কলটি অপেরা এবং ক্রোমের জন্য যথাক্রমে 11,252 / 9,685 অপস / সেকেন্ড করে, আপনি যে পদ্ধতিতে পোস্ট করেছেন সেগুলি 40 আইটেমের তালিকায় 9,666 / 9,083 অপস / সেকেন্ড করে। আমি মনে করি পার্থক্যটি jQuery উপাদান তালিকা থেকে আপনার উদাহরণে অ্যারেতে রূপান্তর থেকে আসে, যদি এটি সহায়তা করে। এগুলি খুব কাছাকাছি, সুতরাং আপনার কোডিং শৈলীর জন্য উপযুক্ত যে
কোনওটি চয়ন করুন

6
var arr = new Array();

$('li').each(function() { 
  arr.push(this.innerHTML); 
})

1
ইনারএইচটিএমএলের উপর নির্ভর করার পরিবর্তে আপনার "এটি" কে একটি জিকুয়েরি অবজেক্টে পরিবর্তন করা উচিত এবং jQuery নেটিভ পাঠ্য পদ্ধতিটি ব্যবহার করা উচিত। this (এটি)। পাঠ্য ()
নাথান

3
কেন? অবশেষে $ (এটি) .html () স্থানীয় পদ্ধতিটি ব্যবহার করবে
খোদর

এক্ষেত্রে নতুন অ্যারে () এর পরিবর্তে [] ব্যবহার করা ভাল - পার্থক্য কী
ক্রাইপ্রু

2

আপনি নিম্নলিখিত হিসাবে করতে পারেন। কোডের একটি লাইন যথেষ্ট হবে

  • let array = $('ul>li').toArray().map(item => $(item).html());
  • আগ্রহী উপাদান পান

    1. বাচ্চা পেতে

    2. টু অ্যারে () পদ্ধতি থেকে অ্যারে পান

    3. আপনি চান ফলাফল ফিল্টার

let array = $('ul>li').toArray().map(item => $(item).html());
console.log(array);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul>
  <li>text1</li>
  <li>text2</li>
  <li>text3</li>
</ul>

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.