বস্তুর সম্পত্তির নাম পাওয়া Get


178

আমি ভাবছিলাম যে জাভাস্ক্রিপ্টের মতো কোনও বস্তুর মধ্য দিয়ে লুপ করার কোনও উপায় আছে কিনা?

for(var i in myObject) {
    // ...
}

তবে প্রতিটি সম্পত্তির নাম এইভাবে পান।

for(var i in myObject) {
    separateObj[myObject[i].name] = myObject[i];
}

আমি গুগলে এর মতো কিছু খুঁজে পাচ্ছি না। তারা ভেরিয়েবলের নামগুলি তাদের সাথে পাস করার জন্য বলে তবে আমি যা অর্জন করার চেষ্টা করছি তার পক্ষে এটি বিকল্প নয়।

আপনি যে কোনও সহায়তা দিতে পারেন তার জন্য ধন্যবাদ।



4
seperateহওয়া উচিতseparate
হুয়ান মেন্ডেস

13
@ জুয়ানমেন্ডেস ধন্যবাদ, সংশোধন হয়েছে। বাহ, এই প্রশ্নটি অতীতের একটি বিস্ফোরণ। আমি 'l' + new Array(1000).join('o') + 'ng'তখন থেকে একটি পথ এসেছি ।
অলিকাল

1
চেক করা উত্তরটি ভুল, অবজেক্ট.কিজ () পদ্ধতিটি ব্যবহার করুন।
কেভিন ফ্লোরিডা

উত্তর যাচাই করা হয়েছে এবং অবজেক্ট.কিজ () জিনিস বিভিন্ন জিনিস করে, তাই আপনি যা চান তার উপর নির্ভর করে উভয়ই সঠিক হতে পারে।
গাবে জনসন

উত্তর:


163

অবজেক্ট.কিজ () ব্যবহার করুন :

var myObject = { a: 'c', b: 'a', c: 'b' };
var keyNames = Object.keys(myObject);
console.log(keyNames); // Outputs ["a","b","c"]

Object.keys() আপনাকে ইনপুট অবজেক্টের সাথে সম্পর্কিত সম্পত্তি নামের একটি অ্যারে দেয়।


3
আরও সুনির্দিষ্টভাবে, অবজেক্ট.কিজ (আপত্তি) আপত্তি অনুসারে পাস হওয়া সম্পত্তির নাম, অর্থাত্ কীগুলি সরবরাহ করে returns
একজন শিক্ষানবিশের

1
সংযোজন, অবজেক্ট.কিজ () কেবলমাত্র অগণিত বৈশিষ্ট্যগুলি ফেরত দেবে, অবজেক্ট.জেটঅনপ্রোপার্টি () তার সমস্ত বৈশিষ্ট্য ফিরিয়ে দেবে
বিটফিশকিজ

191

i নাম।

for(var name in obj) {
    alert(name);
    var value = obj[name];
    alert(value);
}

সুতরাং আপনি করতে পারেন:

seperateObj[i] = myObject[i];

1
বন্ধনী সিনট্যাক্সের মাধ্যমে অবজেক্টের বৈশিষ্ট্য অ্যাক্সেস করা যায়। obj.prop1 হ'ল আপত্তি ['প্রোপ 1'] এর মতো।
জোশিয়ার রুডেল

5
একটি ভাল অনুশীলন ব্যবহার করা HasOwnProperty যখন for..in ব্যবহার
Bakudan

5
@ বাকুদান আপনার অর্থ কী তা জানেন তবে এটি উত্তোলনের আরও ভাল উপায় হ'ল hasOwnPropertyউত্তরাধিকারসূত্রে প্রাপ্ত সম্পত্তিগুলি না চাইলে আপনার ব্যবহার করা উচিত । এইভাবে আপনি কিছু নিয়ম অন্ধভাবে অনুসরণ করছেন না। এটি হতে পারে যে কোনও কোনও ক্ষেত্রে আপনি আসলে উত্তরাধিকার সূত্রে প্রাপ্ত বৈশিষ্ট্যগুলি দেখতে চান। কোনও বস্তুর নিজস্ব বৈশিষ্ট্যগুলি লুপ করার আরেকটি উপায় হ'ল অবজেক্ট.কিগুলি ব্যবহার করা । Object.keys(obj).forEach(function(prop){ alert obj[prop]})
হুয়ান মেন্ডিস

@ জুয়ান মেন্ডেস হ্যাঁ, আমি উত্তরাধিকারসূত্রে প্রাপ্ত সম্পত্তিগুলির সাথে মামলাটি বোঝাতে চাইছি। আমি এই পদ্ধতির ব্যবহার করতে বাধ্য (দুঃখের সাথে), কারণ আইই 8 অবজেক্ট.কিগুলি সমর্থন করে না ...
বাকুদন

17

দাবি অস্বীকার আমি এই প্রশ্নটি ভুল বুঝেছিলাম: "আমি কী এমন সম্পত্তির নামটি জানতে পারি যা কোনও বস্তুর সাথে সংযুক্ত ছিল", তবে উত্তরটি রেখে যেতে বেছে নেওয়া হয়েছে কারণ কিছু লোক অনুসন্ধান করতে গিয়ে এখানে শেষ হতে পারে।


না, কোনও বস্তু একাধিক বৈশিষ্ট্যের সাথে সংযুক্ত থাকতে পারে, সুতরাং এর নাম জানার কোনও উপায় নেই।

var obj = {a:1};
var a = {x: obj, y: obj}

আপত্তিটির নাম কী হবে?

আপনি কি নিশ্চিত যে লুপের জন্য কেবলমাত্র নামটির নামটি চান না?

for (var propName in obj) {
  console.log("Iterating through prop with name", propName, " its value is ", obj[propName])
}

@ চ্যাডসচগিন্স আপনি যা বলেছেন তা সত্য, তবে আমি যে প্রশ্নের উত্তর দিচ্ছি তা হ'ল কারণ হ্যাঁ, আপনি কোনও সামগ্রীর নাম পেতে কোনও বস্তুর মাধ্যমে লুপ করতে পারেন। আমি এমন একটি প্রশ্নের উত্তর দিচ্ছি যা ওপি কী বলেছিল তা নাও হতে পারে, আমি কেবল স্পষ্ট করে বলতে চেয়েছিলাম যে একাধিক সম্পত্তি একই জিনিসকে নির্দেশ করতে পারে।
জুয়ান মেন্ডেস

7

আপনি সহজেই বস্তুগুলিতে পুনরাবৃত্তি করতে পারেন

উদাহরণস্বরূপ: যদি বস্তুটি var a = {a: 'আপেল', বি: 'বল', সি: 'বিড়াল', ডি: 'পুতুল', ই: 'হাতি'};

Object.keys(a).forEach(key => {
   console.log(key) // returns the keys in an object
   console.log(a[key])  // returns the appropriate value 
})

6

অবস্থানের দ্বারা কোনও অবজেক্ট প্রোপার্টিটিতে সরাসরি অ্যাক্সেসের জন্য ... সম্পত্তির জন্য সাধারণত উপযোগী [0] ... সুতরাং এটি পরবর্তী সম্পর্কে তথ্য রাখে ... অথবা নোড.জেজে 'লোড করা ক্যাশে [0]' প্রথম লোড হওয়া বাহ্যিক মডিউলটির জন্য ইত্যাদি ইত্যাদি

Object.keys( myObject )[ 0 ]
Object.keys( myObject )[ 1 ]
...
Object.keys( myObject )[ n ]

4

"অবজেক্ট.কিজ (অবজেক্ট)" ব্যতীত, আমাদের কাছে খুব সহজ "জন্য" ... "লুপ" রয়েছে যা কোন বস্তুর অগণিত সম্পত্তির নামের উপরে লুপ করে।

const obj = {"fName":"John","lName":"Doe"};

for (const key in obj) {
    //This will give key
      console.log(key);
    //This will give value
    console.log(obj[key]);
    
}


3

আপনার মূল ভাষাটি কী তার উপর নির্ভর করে অবজেক্টটির সম্পত্তি বা "অ্যারের কী" বা "অ্যারে সূচক" পেতে ...... অবজেক্ট.কিজ () পদ্ধতিটি ব্যবহার করুন।

গুরুত্বপূর্ণ, এটি শুধুমাত্র "আধুনিক ব্রাউজারগুলি" এর সাথে সামঞ্জস্যপূর্ণ:

সুতরাং যদি আপনার অবজেক্টটি বলা হয়, মাইবজেক্ট ...

var c = 0;
for(c in myObject) {
    console.log(Object.keys(myObject[c]));
}

Walla! এটি অবশ্যই সর্বশেষতম ফায়ারফক্স এবং ie 11 এবং ক্রোমে কাজ করবে ...

এখানে MDN https://developer.mozilla.org/en-US/docs/Web/ জাভা স্ক্রিপ্ট / রেফারেন্স / গ্লোবাল_অবজেক্টস / অবজেক্ট / স্পেসে কিছু ডকুমেন্টেশন রয়েছে


2

ইন এসএস

EG আপনার এই ধরণের অবজেক্টটি রয়েছে:

var ELEMENTS = {
    STEP_ELEMENT: { ID: "0", imageName: "el_0.png" },
    GREEN_ELEMENT: { ID: "1", imageName: "el_1.png" },
    BLUE_ELEMENT: { ID: "2", imageName: "el_2.png" },
    ORANGE_ELEMENT: { ID: "3", imageName: "el_3.png" },
    PURPLE_ELEMENT: { ID: "4", imageName: "el_4.png" },
    YELLOW_ELEMENT: { ID: "5", imageName: "el_5.png" }
};

এবং এখন আপনি যদি এমন কোনও ফাংশন রাখতে চান যে আপনি যদি '0' পরম হিসাবে পাস করেন - 'STEP_ELEMENT' পেতে, '2' যদি 'BLUE_ELEMENT' পান এবং তাই

function(elementId) {
    var element = null;

    Object.keys(ELEMENTS).forEach(function(key) {
        if(ELEMENTS[key].ID === elementId.toString()){
            element = key;
            return;
        }    
    });

    return element;
}

এটি সম্ভবত সমস্যার সেরা সমাধান নয় তবে এটি কীভাবে করবেন তা আপনাকে ধারণা দেওয়ার পক্ষে এটি ভাল।

চিয়ার্স।



0

যখন আপনি প্রথমে / ইন লুপ রাখেন তখন আমি সম্পত্তিটির নাম। সুতরাং আপনার সম্পত্তির নাম, i এবং মাইবজেক্ট [i] করে মানটি অ্যাক্সেস করতে পারেন।


0

এই সমাধানগুলিও কাজ করে।

// Solution One
function removeProperty(obj, prop) {
  var bool;
  var keys = Object.keys(obj);
  for (var i = 0; i < keys.length; i++) {
    if (keys[i] === prop) {
      delete obj[prop];
      bool = true;
    } 
  }
  return Boolean(bool);
}


//Solution two
function removeProperty(obj, prop) {
  var bool;
  if (obj.hasOwnProperty(prop)) {
      bool = true;
      delete obj[prop];
  }
  return Boolean(bool);
}

0

ব্যবহার Object.keys()একটি থেকে বৈশিষ্ট্য লাভ করার জন্য ফাংশন Object, এবং এটি, নাম দ্বারা অনুসন্ধান করুন সম্পত্তি সাহায্য করতে পারেন উদাহরণস্বরূপ:

const Products = function(){
    this.Product = "Product A";
    this.Price = 9.99;
    this.Quantity = 112;
};

// Simple find function case insensitive
let findPropByName = function(data, propertyName){
 let props = [];
 Object.keys(data).forEach(element => {
    return props.push(element.toLowerCase());
  });
  console.log(props);
  let i = props.indexOf(propertyName.toLowerCase());

  if(i > -1){
    return props[i];
  }
  return false;
};

// calling the function
let products = new Products();
console.log(findPropByName(products, 'quantity'));

-1

দ্রুত এবং নোংরা:

function getObjName(obj) {
  return (wrap={obj}) && eval('for(p in obj){p}') && (wrap=null);
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.