কিভাবে একটি লুপে অবজেক্ট আক্ষরিক একটি অ্যারে তৈরি করবেন?


224

আমার এই জাতীয় অবজেক্টের অ্যারে তৈরি করতে হবে:

var myColumnDefs = [
    {key:"label", sortable:true, resizeable:true},
    {key:"notes", sortable:true,resizeable:true},......

এর মতো লুপে:

for (var i = 0; i < oFullResponse.results.length; i++) {
    console.log(oFullResponse.results[i].label);
}

অ্যারের প্রতিটি উপাদানের মান হওয়া keyউচিত results[i].label

উত্তর:


395
var arr = [];
var len = oFullResponse.results.length;
for (var i = 0; i < len; i++) {
    arr.push({
        key: oFullResponse.results[i].label,
        sortable: true,
        resizeable: true
    });
}

18
আপনি var obj = {কিছুটা এড়িয়ে যেতে পারেন , কেবল আক্ষরিক দিকে চাপ দিন।
পিটার বেলি

3
দৈর্ঘ্য একবারে গণনা করা সম্ভবত একটি ভাল ধারণা, আমি var objকোড পরিষ্কার করার জন্য একটি যুক্ত করা বেছে নিই , অবশ্যই আপনি এড়িয়ে যেতে পারেন, আপনি ইচ্ছা করলে পুরো স্ক্রিপ্টটি এক লাইনে লিখতে পারেন :)
রায়েল

3
@ কংগ্যাক্স, দৈর্ঘ্য "গণনা করা হয়নি", এটি একটি ও (1) অপারেশন।
ট্রিপটিচ

8
@ ট্রিপটিচ - হ্যাঁ, তবে এটি এমন সম্পত্তি অনুসন্ধান যা আপনি প্রতিটি পুনরাবৃত্তির সাথে সম্পাদন করেন যা নিখরচায় নয় এবং এড়ানো যায়। মাইক্রো-অপ্টিমাইজেশান? সম্ভবত। এছাড়াও এটি একটি "লাইভ" মান - যদি আপনি লুপে অ্যারে পরিবর্তন করেন তবে দৈর্ঘ্য ক্রমাগত পুনরাবৃত্তিতে পরিবর্তিত হবে যা অনন্তের দিকে পরিচালিত করতে পারে। এটি দেখুন youtube.com/watch?v=mHtdZgou0qU
পিটার বেইলি

2
হ্যাঁ, তবে আপনি প্রতিটি পুনরাবৃত্তি অ্যারে পরিবর্তন করছেন না। আপনি যদি হন তবে বেশিরভাগ ক্ষেত্রেই দৈর্ঘ্যের তুলনায় তুলনা করা হাস্যকর হবে।
ট্রিপটিচ

61

রায়েলের উত্তর ভাল - এটি আপনার প্রশ্নের উত্তর দেয়।

আমার কাছে এটি মনে হচ্ছে যদিও আপনার সত্যিকার অর্থে সাব-অবজেক্টস সহ লেবেল দ্বারা চিহ্নিত একটি অবজেক্টকে মান হিসাবে তৈরি করা উচিত:

var columns = {};
for (var i = 0; i < oFullResponse.results.length; i++) {
    var key = oFullResponse.results[i].label;
    columns[key] = {
        sortable: true,
        resizeable: true
    };
}

// Now you can access column info like this. 
columns['notes'].resizeable;

উপরের পদ্ধতির প্রতিটি অ্যাক্সেসের জন্য কীটির জন্য পুরো অবজেক্ট অ্যারেটি অনুসন্ধান করার চেয়ে অনেক দ্রুত এবং বুদ্ধিমানের হওয়া উচিত।


মূল সমাধানটি থেকে +1, আরও জ্ঞান তৈরি করে এবং আমার প্রয়োজনীয়তা সম্পর্কে আমাকে সহায়তা করে :)
বিজয়ী_জাইনার

দেখে মনে হচ্ছে আপনি ভেরি কীটি সেট করার পরে আপনি একটি অর্ধ-কোলন মিস করছেন?
32

সুন্দর উত্তর, কিছুক্ষণের জন্য কীভাবে তথ্য অ্যাক্সেস করবেন তা সন্ধান করছেন, আপনাকে ধন্যবাদ
করছিলাম

কী যদি একাধিকবার হওয়া দরকার! ['নোট'] একাধিকবার দেখা দিতে পারে তবে আমরা কী করতে পারি?
মিলসন

1
মিলসন - সেক্ষেত্রে এটি সত্যই "চাবি" নয়
ট্রিপটিচ




4

নিক রিগস এর একই ধারণাটিতে তবে আমি একটি নির্মাণকারী তৈরি করি এবং এটি ব্যবহার করে অ্যারেতে একটি নতুন অবজেক্ট ঠেলে দেয়। এটি শ্রেণীর কীগুলির পুনরাবৃত্তি এড়াতে:

var arr = [];
var columnDefs = function(key, sortable, resizeable){
    this.key = key; 
    this.sortable = sortable; 
    this.resizeable = resizeable;
    };

for (var i = 0; i < len; i++) {
    arr.push((new columnDefs(oFullResponse.results[i].label,true,true)));
}

3

আমি অ্যারে তৈরি করব এবং তারপরে এটিতে বস্তুর আক্ষরিক সংযোজন করব।

var myColumnDefs = [];

for ( var i=0 ; i < oFullResponse.results.length; i++) {

    console.log(oFullResponse.results[i].label);
    myColumnDefs[myColumnDefs.length] = {key:oFullResponse.results[i].label, sortable:true, resizeable:true};
}

3
var myColumnDefs = new Array();

for (var i = 0; i < oFullResponse.results.length; i++) {
    myColumnDefs.push({key:oFullResponse.results[i].label, sortable:true, resizeable:true});
}

7
এর []পরিবর্তে অ্যারে ব্যবহার করা আরও ভাল new Array()
রায়য়েল 20

আকর্ষণীয় আলোচনা [] বনাম নতুন অ্যারে () স্ট্যাকওভারফ্লো.com
অ্যাড্রিয়ান পি।

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