私はJavaScriptの中にそのようにオブジェクトをループする方法があるのではないかと思っていました。
for(var i in myObject) {
// ...
}
しかし、このように各プロパティの名前を取得してください。
for(var i in myObject) {
separateObj[myObject[i].name] = myObject[i];
}
グーグルでそれのようなものを見つけることができないようです。彼らはそれらと共に変数の名前を渡すように言うが、これは私が達成しようとしていることのためのオプションではない。
あなたが提供できるあらゆる助けをありがとう。
Object.keys(): を使用してください。
var myObject = { a: 'c', b: 'a', c: 'b' };
var keyNames = Object.keys(myObject);
console.log(keyNames); // Outputs ["a","b","c"]
Object.keys()
はあなたに入力オブジェクトに属するプロパティ名の配列を与えます。
i
は名前です。
for(var name in obj) {
alert(name);
var value = obj[name];
alert(value);
}
だからあなたはできる:
seperateObj[i] = myObject[i];
免責事項私は「オブジェクトが付けられたプロパティ名を知ることができますか?」と誤解しましたが、検索中にここにたどり着く可能性があるため、回答を残すことにしました。
いいえ、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])
}
あなたは簡単にオブジェクトを繰り返すことができます
例:オブジェクトが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
})
位置によるオブジェクトプロパティへの直接アクセスのために...一般的にproperty [0]のために...それはそれについての情報を保持する...あるいは最初にロードされた外部モジュールのためのnode.js 'require.cache [0]'になど.
Object.keys( myObject )[ 0 ]
Object.keys( myObject )[ 1 ]
...
Object.keys( myObject )[ n ]
あなたの母国語が何であるかに応じてオブジェクトまたは "配列キー"または "配列インデックス"のプロパティを取得するには...... 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
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;
}
これはおそらく問題に対する最善の解決策ではありませんが、それをどのように行うかについての考えを与えるのは良いことです。
乾杯。
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"]
これらの解決策もうまくいきます。
// 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);
}
あなたが最初に立ち上げたfor/inループをするとき、私はプロパティ名です。つまり、プロパティ名はiで、myObject [i]を実行して値にアクセスします。