JSON অ্যারে মাধ্যমে জাভাস্ক্রিপ্ট লুপ?


151

আমি নিম্নলিখিত জসন অ্যারেটি লুপ করার চেষ্টা করছি:

{
  "id": "1",
  "msg": "hi",
  "tid": "2013-05-05 23:35",
  "fromWho": "hello1@email.se"
}, {
  "id": "2",
  "msg": "there",
  "tid": "2013-05-05 23:45",
  "fromWho": "hello2@email.se"
}

এবং নিম্নলিখিত চেষ্টা করেছেন

for (var key in data) {
   if (data.hasOwnProperty(key)) {
      console.log(data[key].id);
   }
}

তবে কোনও কারণে আমি প্রথম অংশটি পাচ্ছি, আইডি 1 মান values

কোন ধারনা?


কিছু অনুপস্থিত বন্ধনী আছে? এটি এখন কোনও অ্যারের মতো দেখাচ্ছে না। এবং আপনি JSON পার্স করেছেন?
অস্বীকার করেছেন সাগুরেট

এটা কি বস্তুর অ্যারে? (আপনি কি অনুপস্থিত [] বা তারা সেখানে নেই?)
এলপিপিওরা

9
এটি JSON বা অ্যারেও নয়।
জেজেজে


দয়া করে শিরোনাম পরিবর্তন করুন, এটি কোনও JSON অবজেক্ট বৈশিষ্ট্যের মাধ্যমে পুনরাবৃত্তি করা হবে, কোনও অ্যারে নয়
টেলরড ওয়েব সাইটগুলি

উত্তর:


222

আপনার JSON এর মতো দেখতে হবে:

var json = [{
    "id" : "1", 
    "msg"   : "hi",
    "tid" : "2013-05-05 23:35",
    "fromWho": "hello1@email.se"
},
{
    "id" : "2", 
    "msg"   : "there",
    "tid" : "2013-05-05 23:45",
    "fromWho": "hello2@email.se"
}];

আপনি অ্যারের উপর এইভাবে লুপ করতে পারেন:

for(var i = 0; i < json.length; i++) {
    var obj = json[i];

    console.log(obj.id);
}

অথবা এর মতো (এরিকের কাছ থেকে প্রস্তাবিত) আইই সাপোর্টে সাবধানতা অবলম্বন করুন

json.forEach(function(obj) { console.log(obj.id); });

11
বা আরও সংক্ষেপে,json.forEach(function(obj) { console.log(obj.id); });
এরিক

4
আইই 8 এ না থাকলেও (যথারীতি সবাই আই আই;;))
এলপিপিওরা

4
আমি মনে করি যে উদাহরণটি বিভ্রান্ত হতে পারে, কারণ ভের জসন কোনও জেএসএন বস্তু নয়, তবে একটি অ্যারে ray এই ক্ষেত্রে .forEach ভাল কাজ করে তবে আপনি যখন জসন অবজেক্ট ব্যবহার করেন তখন তা কাজ করে না।
এমপোলেটটো

27

আপনার কোডে কয়েকটি সমস্যা আছে, প্রথমে আপনার জসন অবশ্যই দেখতে হবে:

var json = [{
"id" : "1", 
"msg"   : "hi",
"tid" : "2013-05-05 23:35",
"fromWho": "hello1@email.se"
},
{
"id" : "2", 
"msg"   : "there",
"tid" : "2013-05-05 23:45",
"fromWho": "hello2@email.se"
}];

এরপরে, আপনি এটির পুনরাবৃত্তি করতে পারেন:

for (var key in json) {
if (json.hasOwnProperty(key)) {
  alert(json[key].id);
  alert(json[key].msg);
}
}

এবং এটি নিখুঁত ফলাফল দেয়।

ঝাঁকুনি এখানে দেখুন: http://jsfiddle.net/zrSmp/


16
var arr = [
  {
  "id": "1",
  "msg": "hi",
  "tid": "2013-05-05 23:35",
  "fromWho": "hello1@email.se"
  }, {
  "id": "2",
  "msg": "there",
  "tid": "2013-05-05 23:45",
  "fromWho": "hello2@email.se"
  }
];

সহজ বাস্তবায়নের জন্য প্রতিটি পদ্ধতি।

arr.forEach(function(item){
  console.log('ID: ' + item.id);
  console.log('MSG: ' + item.msg);
  console.log('TID: ' + item.tid);
  console.log('FROMWHO: ' + item.fromWho);
});

16

এটা চেষ্টা কর

var json = [{
    "id" : "1", 
    "msg"   : "hi",
    "tid" : "2013-05-05 23:35",
    "fromWho": "hello1@email.se"
},
{
    "id" : "2", 
    "msg"   : "there",
    "tid" : "2013-05-05 23:45",
    "fromWho": "hello2@email.se"
}];

json.forEach((item) => {
  console.log('ID: ' + item.id);
  console.log('MSG: ' + item.msg);
  console.log('TID: ' + item.tid);
  console.log('FROMWHO: ' + item.fromWho);
});

10

যেহেতু আমি ইতিমধ্যে এটি অনুসন্ধান করা শুরু করেছি:

var data = [{
    "id": "1",
    "msg": "hi",
    "tid": "2013-05-05 23:35",
    "fromWho": "hello1@email.se"
}, {
    "id": "2",
    "msg": "there",
    "tid": "2013-05-05 23:45",
    "fromWho": "hello2@email.se"
}]

এবং এই ফাংশন

var iterateData =function(data){   for (var key in data) {
       if (data.hasOwnProperty(key)) {
          console.log(data[key].id);
       }
    }};

আপনি এটিকে কল করতে পারেন

iterateData(data); // write 1 and 2 to the console

এরিকস মন্তব্যের পরে আপডেট করুন

এরিক যেমন একটি অ্যারের জন্য একটি for inলুপ দেখিয়েছে তা অপ্রত্যাশিত ফলাফল পেতে পারে । রেফারেন্সযুক্ত প্রশ্নে নীতি ও নীতি সম্পর্কে দীর্ঘ আলোচনা রয়েছে।

পরীক্ষার জন্য (আমি আমি ...

তবে মনে হয় ফলোলিং বেশ সাশ্রয় করছে:

for(var i = 0; i < array.length; i += 1)

যদিও ক্রোমের একটি পরীক্ষার নিম্নলিখিত ফলাফল ছিল

var ar = [];
ar[0] = "a"; 
ar[1] = "b";
ar[4] = "c";

function forInArray(ar){ 
     for(var i = 0; i < ar.length; i += 1) 
        console.log(ar[i]);
}

// calling the function
// returns a,b, undefined, undefined, c, undefined
forInArray(ar); 

সঙ্গে পরীক্ষা .forEach()

কমপক্ষে ক্রোম 30 এ এটি প্রত্যাশার মতো কাজ করে

var logAr = function(element, index, array) {
    console.log("a[" + index + "] = " + element);
}
ar.forEach(logAr); // returns a[0] = a, a[1] = b, a[4] = c

লিংক


2
-1 - for ... in অ্যারেগুলির জন্য লুপগুলি ব্যবহার করা উচিত নয়
এরিক

অ্যারে বোঝার ব্যবহার for eachfor ... in ...একটি সৃজনশীল ক্রমে অবজেক্ট কীগুলি গণনা করার জন্য একটি ভাষা নির্মাণ const এটি অ্যারের জন্য সঠিক নির্মাণ নয়।
এরিক

9

এটা কাজ করছে। আমি সবে JSON ডেটাতে স্কোয়ার বন্ধনী যুক্ত করেছি। তথ্যটি হ'ল:

var data = [
    { 
        "id": "1",
        "msg": "hi", 
        "tid": "2013-05-05 23:35", 
        "fromWho": "hello1@email.se" 
    }, 
    { 
        "id": "2", 
        "msg": "there", 
        "tid": "2013-05-05 23:45", 
        "fromWho": "hello2@email.se"
    }
]

এবং লুপটি হ'ল:

for (var key in data) {
   if (data.hasOwnProperty(key)) {
         alert(data[key].id);
   }
} 

6

আপনি যদি এটির উপরে পুনরাবৃত্তি করতে চান তবে এটি অবশ্যই একটি অ্যারে হবে। আপনি খুব সম্ভবত নিখোঁজ [এবং ]

var x = [{
    "id": "1",
        "msg": "hi",
        "tid": "2013-05-05 23:35",
        "fromWho": "hello1@email.se"
}, {
    "id": "2",
        "msg": "there",
        "tid": "2013-05-05 23:45",
        "fromWho": "hello2@email.se"
}];

var $output = $('#output');
for(var i = 0; i < x.length; i++) {
    console.log(x[i].id);
}

এই jsfiddle দেখুন: http://jsfiddle.net/lpiepiora/kN7yZ/


5

কিছুটা দেরি হলেও আমি আশা করি আমি অন্যকে সাহায্য করতে পারি: ডি

আপনার জসনকে এমন কিছু দেখতে হবে যেমন নিক্লাস ইতিমধ্যে বলেছে। এবং তারপরে আপনি এখানে যান:

for(var key in currentObject){
        if(currentObject.hasOwnProperty(key)) {
          console.info(key + ': ' + currentObject[key]);
        }
   }

যদি আপনার একটি বহুমাত্রিক অ্যারে থাকে তবে এটি আপনার কোড:

for (var i = 0; i < multiDimensionalArray.length; i++) {
    var currentObject = multiDimensionalArray[i]
    for(var key in currentObject){
            if(currentObject.hasOwnProperty(key)) {
              console.info(key + ': ' + currentObject[key]);
            }
       }
}

3

ঠিক আছে, আমি এখানে যা দেখতে পাচ্ছি তা হ'ল আপনার কাছে দুটি জেএসওএন অবজেক্ট রয়েছে, কমা দ্বারা বিভক্ত। যদি উভয়ই একটি অ্যারের ভিতরে [...]থাকত ( ) এটি আরও অর্থবোধ করে।

এবং, যদি তারা কোনও অ্যারের ভিতরে থাকে তবে আপনি কেবল "var i = 0 ..." ধরণের লুপের জন্য মান ব্যবহার করবেন। এটি যেমন রয়েছে, আমি মনে করি এটি স্ট্রিংয়ের "আইডি" বৈশিষ্ট্য "1", তারপরে "হাই" এর "আইডি" ইত্যাদি পুনরুদ্ধার করার চেষ্টা করবে।


2

একটি সংক্ষিপ্ত সমাধান ব্যবহার করে mapএবং একটি তীর ফাংশন

var data = [{
  "id": "1",
  "msg": "hi",
  "tid": "2013-05-05 23:35",
  "fromWho": "hello1@email.se"
}, {
  "id": "2",
  "msg": "there",
  "tid": "2013-05-05 23:45",
  "fromWho": "hello2@email.se"
}];
data.map((item, i) => console.log('Index:', i, 'Id:', item.id));

সম্পত্তি যখন "id"উপস্থিত না থাকে তখন কেসগুলি কভার করতে filter:

var data = [{
  "id": "1",
  "msg": "hi",
  "tid": "2013-05-05 23:35",
  "fromWho": "hello1@email.se"
}, {
  "id": "2",
  "msg": "there",
  "tid": "2013-05-05 23:45",
  "fromWho": "hello2@email.se"
}, {
  "msg": "abcde",
  "tid": "2013-06-06 23:46",
  "fromWho": "hello3@email.se"
}];

data.filter(item=>item.hasOwnProperty('id'))
                .map((item, i) => console.log('Index:', i, 'Id:', item.id));


0

ওহ আমার ... সবাই এতো কষ্ট করে কেন !!?

আপনার ডেটা স্নিপেটটি কিছুটা প্রসারিত করা দরকার এবং এটি সঠিক জসন হতে হবে। নোটিশ আমি ঠিক অ্যারে নাম বৈশিষ্ট্য "আইটেম" অন্তর্ভুক্ত

{"item":[
{
  "id": "1",
  "msg": "hi",
  "tid": "2013-05-05 23:35",
  "fromWho": "hello1@email.se"
}, {
  "id": "2",
  "msg": "there",
  "tid": "2013-05-05 23:45",
  "fromWho": "hello2@email.se"
}]}

আপনার জাভা স্ক্রিপ্ট সহজভাবে

var objCount = json.item.length;
for ( var x=0; x < objCount ; xx++ ) {
    var curitem = json.item[x];
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.