সদস্য হিসাবে অবজেক্টগুলির সাথে একটি সরল জাভাস্ক্রিপ্ট অবজেক্টের মধ্য দিয়ে কীভাবে লুপ করবেন?


1598

আমি কীভাবে জাভাস্ক্রিপ্ট অবজেক্টে সমস্ত সদস্যকে লুপ করতে পারি যা অবজেক্টস রয়েছে তার মানগুলি সহ।

উদাহরণস্বরূপ, আমি কীভাবে এটির মাধ্যমে লুপ করতে পারি (প্রতিটিটির জন্য "আপনার_নাম" এবং "আপনার_ম্যাসেজ" অ্যাক্সেস করতে পারি)?

var validation_messages = {
    "key_1": {
        "your_name": "jimmy",
        "your_msg": "hello world"
    },
    "key_2": {
        "your_name": "billy",
        "your_msg": "foo equals bar"
    }
}

উত্তর:


2112
for (var key in validation_messages) {
    // skip loop if the property is from prototype
    if (!validation_messages.hasOwnProperty(key)) continue;

    var obj = validation_messages[key];
    for (var prop in obj) {
        // skip loop if the property is from prototype
        if (!obj.hasOwnProperty(prop)) continue;

        // your code
        alert(prop + " = " + obj[prop]);
    }
}

13
ইন্টারনেট এক্সপ্লোরার সম্মতি দেয় না ( দীর্ঘশ্বাস ফেলে ) বলেন, "আপত্তি [প্রপ] করার সময়" অবজেক্ট এই সম্পত্তি বা পদ্ধতিটিকে সমর্থন করে না "। এর সমাধান আমি এখনও পাইনি।
ব্যবহারকারী 999717

2
@ মাইল্ডফুজ বাস্তবে এটি বোধগম্য হয় যদি আপনি বিবেচনা করেন যে জেএস অবজেক্টের সংখ্যাসূচক কী নেই necessary আপনি কেবল কোনও বস্তুর মাধ্যমে পুনরাবৃত্তি করতে পারবেন না। জাতীয় এর for inখুব একটি ঐতিহ্যগত অনুরূপ foreach
জ্যাক উইলসন

4
কারণ ... এটি একটি ভাল সমাধান, তবে যদি আপনি () - এর জন্য প্রতিশ্রুতি ব্যবহার করেন - লুপটি সাবধান থাকুন, কারণ আপনি যদি লুপটিতে একটি ভেরি তৈরি করেন, তবে আপনি প্রতিশ্রুতিতে ব্যবহার করতে পারবেন না 'তারপরে - কার্য। আপনি লুপটিতে পরিবর্তিত হন কেবলমাত্র একবারে, সুতরাং এটি প্রতিটি তত্ক্ষণীতে একই, এমনকি সর্বশেষ মান রয়েছে। আপনার যদি সমস্যা হয় তবে নীচে "অবজেক্ট.কিজ (অবজেক্ট) .ফোরএচ" বা আমার উত্তরটি ব্যবহার করে দেখুন।
বাইবার

775

ECMAScript 5 এর অধীনে, আপনি একত্রিত করতে পারেন Object.keys()এবং Array.prototype.forEach():

var obj = {
  first: "John",
  last: "Doe"
};

//
//	Visit non-inherited enumerable keys
//
Object.keys(obj).forEach(function(key) {

  console.log(key, obj[key]);

});


34
কোডের বংশবৃদ্ধির জন্য +1 তবে দৃশ্যত, আশ্চর্যরকমভাবে দক্ষতার মতো কার্য সম্পাদন করে না। জেএসপিফার্ফ - বনাম অবজেক্ট.কিজ-এর জন্য
techiev2

6
এই পদ্ধতির ব্যবহার করে এই ত্রুটি থেকে সাবধান থাকুন: "TypeError: অবজেক্ট.কিগুলি অ-অবজেক্টে ডাকা হয়েছে"। for ... in ... hasOwnPropertyপ্যাটার্ন, কিছু বলা যেতে পারে যতদূর আমি (বস্তু, অ্যারে, নাল, অনির্দিষ্ট, সত্য, মিথ্যা, সংখ্যা আদিম, বস্তু) বলতে পারেন।
theazureshadow

2
মনে রাখবেন যে আই 7 এটি সমর্থন করে না।
পল ডি ওয়েট

3
@ techiev2 tests পরীক্ষাগুলি কখনই বৈধ ছিল না। পারফরম্যান্সের বর্তমান অবস্থার জন্য আমার আপডেট হওয়াগুলি দেখুন
অর্গানিকপান্ডা

4
@ টেকিয়েভ ২: এটি Object.keys()এটি ধীর করে দেয় না, এটি বরং forEach()বার বার অ্যাক্সেস .length! আপনি একটি ক্লাসিক ব্যবহার করেন তাহলে forপরিবর্তে -loop এটা প্রায় দু গুণ তাড়াতাড়ি সম্ভব for..in+ + hasOwnProperty()ফায়ারফক্স 33. মধ্যে
CodeManX

384

এই সমস্যা

for (var key in validation_messages) {
   var obj = validation_messages[key];
   for (var prop in obj) {
      alert(prop + " = " + obj[prop]);
   }
}

আপনি সেই আদিম বস্তুর প্রোটোটাইপটি লুপ করবেন।

এটির সাহায্যে আপনি এড়াতে পারবেন:

for (var key in validation_messages) {
   if (validation_messages.hasOwnProperty(key)) {
      var obj = validation_messages[key];
      for (var prop in obj) {
         if (obj.hasOwnProperty(prop)) {
            alert(prop + " = " + obj[prop]);
         }
      }
   }
}

46
সংক্ষেপে: hasOwnPropertyআপনার for- inলুপের ভিতরে চেক করুন ।
ররি ও'কেনে

59
মনে রাখবেন যে কেবলমাত্র যদি আপনার অবজেক্টটি প্রোটোটাইপ পদ্ধতিতে থাকে তবে এটি প্রয়োজনীয়। উদাহরণস্বরূপ, আপনি যে বস্তুর মধ্য দিয়ে লুপ করছেন সেটি যদি কেবল একটি জেএসওএন অবজেক্ট হয় তবে আপনার এই চেকটির প্রয়োজন হবে না।
গীতারিক

6
@rednaw নিরাপদে থাকতে আমি সেই চেকটি ব্যবহার করি কারণ অবজেক্ট.প্রোটোটাইপ পরিবর্তন করা যেতে পারে। কোনও বুদ্ধিমান স্ক্রিপ্ট এটি করবে না, তবে উন্মাদ ব্রাউজার এক্সটেনশনগুলির দ্বারা আপনার পৃষ্ঠায় কোন স্ক্রিপ্টগুলি চালানো যেতে পারে তা আপনি নিয়ন্ত্রণ করতে পারবেন না। ব্রাউজার এক্সটেনশানগুলি আপনার পৃষ্ঠায় চালিত হয় (বেশিরভাগ ব্রাউজারগুলিতে) এবং এগুলি বিজোড় সমস্যা সৃষ্টি করতে পারে (যেমন উইন্ডো সেটসটাইমআউটটি বাতিল করে দিন!)।
রোবোক্যাট

1
আপনাকে অনেক ধন্যবাদ
ব্লু ট্রাম

328

ইন ES6 / 2015 আপনি ভালো একটি বস্তু মাধ্যেমে লুপ করতে পারেন: (ব্যবহার তীর ফাংশন )

Object.keys(myObj).forEach(key => {
  console.log(key);        // the name of the current key.
  console.log(myObj[key]); // the value of the current key.
});

jsbin

ইন ES7 / 2016 আপনি ব্যবহার করতে পারেন Object.entriesপরিবর্তে Object.keysএই মত একটি বস্তু দিয়ে লুপ:

Object.entries(myObj).forEach(([key, val]) => {
  console.log(key); // the name of the current key.
  console.log(val); // the value of the current key.
});

উপরেরগুলি ওয়ান-লাইনার হিসাবেও কাজ করবে :

Object.entries(myObj).forEach(([key, val]) => console.log(key, val));

jsbin

আপনি যদি নেস্টেড অবজেক্টগুলিও লুপ করতে চান তবে আপনি পুনরাবৃত্তি ফাংশন (ES6) ব্যবহার করতে পারেন :

const loopNestedObj = obj => {
  Object.keys(obj).forEach(key => {
    if (obj[key] && typeof obj[key] === "object") loopNestedObj(obj[key]); // recurse.
    else console.log(key, obj[key]); // or do something with key and val.
  });
};

jsbin

উপরে ফাংশন হিসাবে একই, কিন্তু এর পরিবর্তে ES7 সহ :Object.entries()Object.keys()

const loopNestedObj = obj => {
  Object.entries(obj).forEach(([key, val]) => {
    if (val && typeof val === "object") loopNestedObj(val); // recurse.
    else console.log(key, val); // or do something with key and val.
  });
};

এখানে আমরা নেস্টেড অবজেক্টগুলির মাধ্যমে লুপগুলি মান পরিবর্তন করি এবং Object.entries()একসাথে Object.fromEntries()( ES10 / 2019 ) ব্যবহার করে একটি নতুন অবজেক্ট ফিরিয়ে দেব :

const loopNestedObj = obj =>
  Object.fromEntries(
    Object.entries(obj).map(([key, val]) => {
      if (val && typeof val === "object") [key, loopNestedObj(val)]; // recurse
      else [key, updateMyVal(val)]; // or do something with key and val.
    })
  );

2
আপনার ES7 এর জন্য অবজেক্ট.এন্ট্রি ব্যবহার করে উদাহরণস্বরূপ, আপনাকে তীর ফাংশনগুলির প্যারামিটারগুলি [কী, ভ্যাল] যেমন বন্ধনীতে আবদ্ধ করতে হবে: ject অবজেক্ট.এন্ট্রি (মাইওবিজে) .এফ (([কী, ভ্যাল]) => {/ * বিবৃতি * /}
পিউইউ

6
আমি মনে করি যে অবজেক্ট.এন্ট্রি এবং অবজেক্ট.কিজ প্রোটোটাইপটি পুনরাবৃত্তি করে না এটি নির্মাণে কার্যকর হবে যা এটি এবং নির্মাণের ক্ষেত্রে পার্থক্য।
স্টিভিজয়

আপনাকে অনেক ধন্যবাদ
ব্লু ট্রাম

95

অ্যান্ডস্কোর.জেএস এর_.each ব্যবহার :

_.each(validation_messages, function(value, key){
    _.each(value, function(value, key){
        console.log(value);
    });
});

4
ধন্যবাদ টিম, আন্ডারস্কোর ব্যবহার করে খুব তাড়াতাড়ি একটি তাত্পর্যপূর্ণ এবং পরিষ্কার বিকল্পটি পাওয়া ভাল।
কোডার

56

যদি আপনি পুনরাবৃত্তি ব্যবহার করেন তবে আপনি যে কোনও গভীরতার অবজেক্টের বৈশিষ্ট্যগুলি ফিরিয়ে দিতে পারেন-

function lookdeep(object){
    var collection= [], index= 0, next, item;
    for(item in object){
        if(object.hasOwnProperty(item)){
            next= object[item];
            if(typeof next== 'object' && next!= null){
                collection[index++]= item +
                ':{ '+ lookdeep(next).join(', ')+'}';
            }
            else collection[index++]= [item+':'+String(next)];
        }
    }
    return collection;
}

//example

var O={
    a:1, b:2, c:{
        c1:3, c2:4, c3:{
            t:true, f:false
        }
    },
    d:11
};
var lookdeepSample= 'O={'+ lookdeep(O).join(',\n')+'}';


/*  returned value: (String)
O={
    a:1, 
    b:2, 
    c:{
        c1:3, c2:4, c3:{
            t:true, f:false
        }
    },
    d:11
}

*/

2
লুপ থেকে সাবধান থাকুন, এটি কোনও ডিওএম নোডে কল করার মতো।
theazureshadow

45

এই উত্তরটি হ'ল সমাধানগুলির সামগ্রিক যা এই পোস্টে কিছু কার্য সম্পাদন ফিডব্যাক সহ সরবরাহ করা হয়েছিল । আমি মনে করি 2 টি ব্যবহারের কেস রয়েছে এবং লুপ প্রক্রিয়া চলাকালীন সে কীগুলি অ্যাক্সেস করার প্রয়োজন ছিল কিনা সে বিষয়ে ওপি উল্লেখ করেনি।

I. কীগুলি অ্যাক্সেস করা দরকার,

And ofএবং Object.keysপদ্ধতির

let k;
for (k of Object.keys(obj)) {

    /*        k : key
     *   obj[k] : value
     */
}

Approach inপদ্ধতির

let k;
for (k in obj) {

    /*        k : key
     *   obj[k] : value
     */
}

সতর্কতার সাথে এটি ব্যবহার করুন, কারণ এটি প্রোটোটাইপযুক্ত বৈশিষ্ট্যগুলি মুদ্রণ করতে পারে obj

S ES7 পদ্ধতির

for (const [key, value] of Object.entries(obj)) {

}

যাইহোক, সম্পাদনার সময় আমি ES7 পদ্ধতিটি সুপারিশ করব না, কারণ জাভাস্ক্রিপ্ট অভ্যন্তরীণভাবে এই পদ্ধতিটি তৈরির জন্য প্রচুর ভেরিয়েবলের সূচনা করে (প্রমাণের প্রতিক্রিয়াগুলি দেখুন)। আপনি যদি এমন একটি বিশাল অ্যাপ্লিকেশন বিকাশ না করেন যা অপ্টিমাইজেশনের প্রাপ্য, তবে এটি ঠিক আছে তবে যদি অপ্টিমাইজেশনটি আপনার অগ্রাধিকার হয় তবে আপনার এটি সম্পর্কে চিন্তা করা উচিত।

২। আমাদের কেবল প্রতিটি মান অ্যাক্সেস করতে হবে,

And ofএবং Object.valuesপদ্ধতির

let v;
for (v of Object.values(obj)) {

}

পরীক্ষা সম্পর্কে আরও প্রতিক্রিয়া:

  • ক্যাচিং Object.keysবা Object.valuesপারফরম্যান্স নগণ্য

এই ক্ষেত্রে,

const keys = Object.keys(obj);
let i;
for (i of keys) {
  //
}
// same as
for (i of Object.keys(obj)) {
  //
}
  • উদাহরণস্বরূপ Object.values, forফায়ারফক্সে ক্যাশেড ভেরিয়েবলের সাথে নেটিভ লুপ ব্যবহার করা for...ofলুপ ব্যবহারের চেয়ে কিছুটা দ্রুত বলে মনে হচ্ছে । তবে পার্থক্যটি ততটা গুরুত্বপূর্ণ নয় এবং ক্রোম for...ofদেশীয় forলুপের চেয়ে দ্রুত চলছে , তাই আমি কোনও ক্ষেত্রে (৪ র্থ এবং 6th ষ্ঠ পরীক্ষায়) for...ofডিল করার সময় ব্যবহার করার পরামর্শ দেব Object.values

  • ফায়ারফক্সে for...inলুপটি আসলেই ধীর, সুতরাং যখন আমরা পুনরুক্তির সময় কীটি ক্যাশে করতে চাই তা ব্যবহার করা ভাল Object.keys। প্লাস ক্রোম উভয় কাঠামো সমান গতিতে চলছে (প্রথম এবং শেষ পরীক্ষা)।

আপনি এখানে পরীক্ষাগুলি পরীক্ষা করতে পারেন: https://jsperf.com/es7-and-misc-loops


2
ES7 উদাহরণটি প্রতিক্রিয়া নেটিভের সাথে একটি কবিতার মতো কাজ করে!
টাই বেইলি

সুন্দরভাবে ব্যাখ্যা করা হয়েছে। ধন্যবাদ
অলোক রঞ্জন

30

আমি জানি এটি দেরি হয়ে গেছে, তবে অ্যাগ্রিল জনের উত্তরের এই অনুকূলিত ও উন্নত সংস্করণটি লিখতে আমার 2 মিনিট সময় লেগেছে:

var key, obj, prop, owns = Object.prototype.hasOwnProperty;

for (key in validation_messages ) {

    if (owns.call(validation_messages, key)) {

        obj = validation_messages[key];

        for (prop in obj ) {

            // using obj.hasOwnProperty might cause you headache if there is
            // obj.hasOwnProperty = function(){return false;}
            // but owns will always work 
            if (owns.call(obj, prop)) {
                console.log(prop, "=", obj[prop]);
            }

        }

    }

}

1
আপনি কেন সংরক্ষণ hasOwnPropertyকরছেন ownsএবং তারপরে এই উত্তরটির মতো owns.call(obj, prop)কেবল কল করার পরিবর্তে কল করছেন ? obj.hasOwnProperty(prop)
ররি ও'কেনে

14
কারণ objএতে hasOwnPropertyফাংশনটি নিজে থেকেই সংজ্ঞায়িত হতে পারে তাই এটি কোনওটি ব্যবহার করবে না Object.prototype। আপনি এটির forমতো লুপের আগে চেষ্টা করতে পারেন obj.hasOwnProperty = function(){return false;}এবং এটি কোনও সম্পত্তি থেকে পুনরাবৃত্তি করবে না।
আজদার

4
উত্তরটির জন্য আজ্ডারকে +1 করুন এবং যদি আমি অবজেক্ট.প্রোটোটাইপ.হ্যাস ওয়ানপ্রোপার্টি সম্পর্কে ভাল জিনিসটি করতে পারি তবে +1 করুন। আমি দেখেছি যে পূর্বে আন্ডারস্কোর লাইব্রেরির উত্স কোডের ভিতরে ছিল তবে কেন জানি না।
স্যামুয়েল


14

পি মান হয়

for (var key in p) {
  alert(key + ' => ' + p[key]);
}

অথবা

Object.keys(p).forEach(key => { console.log(key, p[key]) })

9

ES7 এ আপনি করতে পারেন:

for (const [key, value] of Object.entries(obj)) {
  //
}

আমি কিছু পরীক্ষা করেছি, বিপুল পরিমাণে ডেটা নিয়ে কাজ করার সময় এই পদ্ধতিটি সত্যিই ধীর।
vdegenne


7

এটি করার কয়েকটি উপায় ...

1) 2 টি স্তর ... লুপে ...

for (let key in validation_messages) {
   const vmKeys = validation_messages[key];
   for (let vmKey in vmKeys) {
      console.log(vmKey + vmKeys[vmKey]);
   }
}

2) ব্যবহারObject.key

Object.keys(validation_messages).forEach(key => {
   const vmKeys = validation_messages[key];
   Object.keys(vmKeys).forEach(key => {
    console.log(vmKeys + vmKeys[key]);
   });
});

3) পুনরাবৃত্তি ফাংশন

const recursiveObj = obj => {
  for(let key in obj){
    if(!obj.hasOwnProperty(key)) continue;

    if(typeof obj[key] !== 'object'){
      console.log(key + obj[key]);
    } else {
      recursiveObj(obj[key]);
    }
  }
}

এবং এটিকে কল করুন:

recursiveObj(validation_messages);

5

AgileJon এর সমাধান ( ডেমো ) এর উন্নত এবং পুনরাবৃত্ত সংস্করণটি এখানে আসে :

function loopThrough(obj){
  for(var key in obj){
    // skip loop if the property is from prototype
    if(!obj.hasOwnProperty(key)) continue;

    if(typeof obj[key] !== 'object'){
      //your code
      console.log(key+" = "+obj[key]);
    } else {
      loopThrough(obj[key]);
    }
  }
}
loopThrough(validation_messages);

এই সমাধানটি বিভিন্ন ধরণের গভীরতার জন্য কাজ করে।


5

অন্য বিকল্প:

var testObj = {test: true, test1: false};
for(let x of Object.keys(testObj)){
    console.log(x);
}

আমি ক্রোম 55.0 এ আপনার সমাধান চেষ্টা করেছিলাম এবং আপনি একটি টাইপ ত্রুটি পান। আপনার উত্তরটি দেখতে সুন্দর এবং সংযোগযুক্ত, আপনি যদি এটির কাজটি করতে পারেন তবে এটি সম্ভবত সেরা বিকল্পগুলির মধ্যে একটি হবে। আমি এটি বের করার চেষ্টা করেছি কিন্তু আপনার সমাধান বুঝতে পারছি না।
টোলমেরা

2
@ টোলমিরা ফিক্সড
ডুড

4

ECMAScript-2017, মাত্র এক মাস আগে চূড়ান্ত করা হয়েছে, অবজেক্ট.ভ্যালুগুলি () পরিচয় করিয়ে দেয়। সুতরাং এখন আপনি এটি করতে পারেন:

let v;
for (v of Object.values(validation_messages))
   console.log(v.your_name);   // jimmy billy

3

আমি মনে করি এটি উল্লেখ করা মূল্যবান যে jQuery এর সাথে সুন্দরভাবে সাজিয়েছে $.each()

দেখুন: https://api.jquery.com/each/

উদাহরণ স্বরূপ:

$('.foo').each(function() {
    console.log($(this));
});

$(this)বস্তুর ভিতরে একক আইটেম হচ্ছে। $('.foo')আপনি jQuery এর নির্বাচক ইঞ্জিন ব্যবহার করতে না চান যদি একটি পরিবর্তনশীল অদলবদল ।


3

var obj={
name:"SanD",
age:"27"
}
Object.keys(obj).forEach((key)=>console.log(key,obj[key]));

জাভাস্ক্রিপ্ট অবজেক্টের মধ্য দিয়ে লুপ করতে আমরা প্রত্যেকের জন্য এবং কোডটি অনুকূল করতে আমরা তীর ফাংশনটি ব্যবহার করতে পারি


2

উপরের পোস্টগুলি আমি যা করতে পেরেছিলাম তা করতে বেশ ভালভাবে পেলাম না।

এখানে অন্যান্য উত্তরগুলির সাথে ঘুরে দেখার পরে, আমি এটি তৈরি করেছি। এটি হ্যাকি, তবে এটি কার্যকর!

এই বস্তুর জন্য:

var myObj = {
    pageURL    : "BLAH",
    emailBox   : {model:"emailAddress", selector:"#emailAddress"},
    passwordBox: {model:"password"    , selector:"#password"}
};

... এই কোড:

// Get every value in the object into a separate array item ...
function buildArray(p_MainObj, p_Name) {
    var variableList = [];
    var thisVar = "";
    var thisYes = false;
    for (var key in p_MainObj) {
       thisVar = p_Name + "." + key;
       thisYes = false;
       if (p_MainObj.hasOwnProperty(key)) {
          var obj = p_MainObj[key];
          for (var prop in obj) {
            var myregex = /^[0-9]*$/;
            if (myregex.exec(prop) != prop) {
                thisYes = true;
                variableList.push({item:thisVar + "." + prop,value:obj[prop]});
            }
          }
          if ( ! thisYes )
            variableList.push({item:thisVar,value:obj});
       }
    }
    return variableList;
}

// Get the object items into a simple array ...
var objectItems = buildArray(myObj, "myObj");

// Now use them / test them etc... as you need to!
for (var x=0; x < objectItems.length; ++x) {
    console.log(objectItems[x].item + " = " + objectItems[x].value);
}

... কনসোল এ এটি উত্পাদন করে:

myObj.pageURL = BLAH
myObj.emailBox.model = emailAddress
myObj.emailBox.selector = #emailAddress
myObj.passwordBox.model = password
myObj.passwordBox.selector = #password

0

আমার জন্য যে সমাধানটি কাজ করে তা নিম্নলিখিত

_private.convertParams=function(params){
    var params= [];
    Object.keys(values).forEach(function(key) {
        params.push({"id":key,"option":"Igual","value":params[key].id})
    });
    return params;
}

0

বহিরাগত এক - গভীর পারাপার

JSON.stringify(validation_messages,(field,value)=>{
  if(!field) return value;

  // ... your code

  return value;
})

এই সমাধানটিতে আমরা replacer ব্যবহার করি যা পুরো অবজেক্ট এবং নেস্টেড অবজেক্টগুলিকে গভীরভাবে অতিক্রম করতে দেয় - প্রতিটি স্তরে আপনি সমস্ত ক্ষেত্র এবং মান পাবেন। আপনার যদি প্রতিটি ক্ষেত্রের পুরো পথ পেতে হয় তবে এখানে দেখুন


-6

আমার ক্ষেত্রে (পূর্বের ভিত্তিতে) যে কোনও স্তরের সংখ্যা সম্ভব।

var myObj = {
    rrr: undefined,
    pageURL    : "BLAH",
    emailBox   : {model:"emailAddress", selector:"#emailAddress"},
    passwordBox: {model:"password"    , selector:"#password"},
    proba: {odin:{dva:"rr",trr:"tyuuu"}, od:{ff:5,ppa:{ooo:{lll:'lll'}},tyt:'12345'}}
};


function lookdeep(obj,p_Name,gg){
    var A=[], tem, wrem=[], dd=gg?wrem:A;
    for(var p in obj){
        var y1=gg?'':p_Name, y1=y1 + '.' + p;
        if(obj.hasOwnProperty(p)){
           var tem=obj[p];
           if(tem && typeof tem=='object'){
               a1=arguments.callee(tem,p_Name,true);
               if(a1 && typeof a1=='object'){for(i in a1){dd.push(y1 + a1[i])};}
            }
            else{
               dd.push(y1 + ':' + String(tem));
            }
        }
    };
    return dd
};


var s=lookdeep(myObj,'myObj',false);
for (var x=0; x < s.length; ++x) {
console.log(s[x]+'\n');}

ফলাফল:

["myObj.rrr:undefined",
"myObj.pageURL:BLAH",
"myObj.emailBox.model:emailAddress",
"myObj.emailBox.selector:#emailAddress",
"myObj.passwordBox.model:password",
"myObj.passwordBox.selector:#password",
"myObj.proba.odin.dva:rr",
"myObj.proba.odin.trr:tyuuu",
"myObj.proba.od.ff:5",
"myObj.proba.od.ppa.ooo.lll:lll",
"myObj.proba.od.tyt:12345"]
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.