web-dev-qa-db-ja.com

オブジェクトのプロパティ名を取得する

私はJavaScriptの中にそのようにオブジェクトをループする方法があるのではないかと思っていました。

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

しかし、このように各プロパティの名前を取得してください。

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

グーグルでそれのようなものを見つけることができないようです。彼らはそれらと共に変数の名前を渡すように言うが、これは私が達成しようとしていることのためのオプションではない。

あなたが提供できるあらゆる助けをありがとう。

159
Olical

Object.keys(): を使用してください。

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

Object.keys()はあなたに入力オブジェクトに属するプロパティ名の配列を与えます。

130
Trann

iは名前です。

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

だからあなたはできる:

seperateObj[i] = myObject[i];
185
Josiah Ruddell

免責事項私は「オブジェクトが付けられたプロパティ名を知ることができますか?」と誤解しましたが、検索中にここにたどり着く可能性があるため、回答を残すことにしました。


いいえ、1つのオブジェクトを複数のプロパティに関連付けることができるため、その名前を知る方法はありません。

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

Objの名前は何ですか?

Forループのプロパティ名だけが欲しくないということですか?

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

あなたは簡単にオブジェクトを繰り返すことができます

例:オブジェクトがvarの場合a = {a: 'Apple'、b: 'ball'、c: 'cat'、d: 'doll'、e: 'elephant'};

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

位置によるオブジェクトプロパティへの直接アクセスのために...一般的にproperty [0]のために...それはそれについての情報を保持する...あるいは最初にロードされた外部モジュールのためのnode.js 'require.cache [0]'になど.

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

あなたの母国語が何であるかに応じてオブジェクトまたは "配列キー"または "配列インデックス"のプロパティを取得するには...... Object.keys()メソッドを使います。

重要、これは "Modern browsers"とのみ互換性があります。

だからあなたのオブジェクトが呼び出された場合、myObject ...

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

ワラ!これは間違いなく最新のFirefoxとie11とクロムで動作します...

これがMDNでの文書です https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys

3
Kevin Florida

ES 5

例えば。あなたはこの種のオブジェクトを持っています:

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;
}

これはおそらく問題に対する最善の解決策ではありませんが、それをどのように行うかについての考えを与えるのは良いことです。

乾杯。

2
Combine

2018年現在、あなたはObject.getOwnPropertyNames()を利用することができます Developer Mozilla Documentation

const object1 = {
  a: 1,
  b: 2,
  c: 3
};

console.log(Object.getOwnPropertyNames(object1));
// expected output: Array ["a", "b", "c"]
1
Aaqib

これらの解決策もうまくいきます。

// 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
ekbgh

あなたが最初に立ち上げたfor/inループをするとき、私はプロパティ名です。つまり、プロパティ名はiで、myObject [i]を実行して値にアクセスします。

0
mmurch