回答:
すべてのキーを取得したい場合は、ECMAScript 5が導入されましたObject.keys
。これは新しいブラウザでのみサポートされていますが、MDCのドキュメントでは代替の実装が提供されています(for...in
btw も使用しています)。
if(!Object.keys) Object.keys = function(o){
if (o !== Object(o))
throw new TypeError('Object.keys called on non-object');
var ret=[],p;
for(p in o) if(Object.prototype.hasOwnProperty.call(o,p)) ret.push(p);
return ret;
}
もちろん、キーと値の両方が必要な場合は、それfor...in
が唯一の合理的なソリューションです。
p
キーを取得しますが、キーの値を取得するにはどうすればよいですか?ありがとう。
オブジェクト内でforループを繰り返します。
for(var i in foo){
alert(i); // alerts key
alert(foo[i]); //alerts key's value
}
または
Object.keys(foo)
.forEach(function eachKey(key) {
alert(key); // alerts key
alert(foo[key]); // alerts value
});
foo[i]
ます"_proto_"
か?
foo[i]
場合i
はsome string
どうなりますか?
あなたのためのワンライナー:
const OBJECT = {
'key1': 'value1',
'key2': 'value2',
'key3': 'value3',
'key4': 'value4'
};
const value = 'value2';
const key = Object.keys(OBJECT)[Object.values(OBJECT).indexOf(value)];
window.console.log(key); // = key2
これが最も簡単で簡単な方法です。これが私たちのやり方です。
var obj = { 'bar' : 'baz' }
var key = Object.keys(obj)[0];
var value = obj[key];
console.log("key = ", key) // bar
console.log("value = ", value) // baz
Object.keys(obj) // ['bar']
これで、オブジェクトを反復して、以下のような値にアクセスできます-
Object.keys(obj).forEach( function(key) {
console.log(obj[key]) // baz
})
TypeError
キーが数字であることを期待するなら、あなたは得るかもしれません。キーは常に文字列だからです。
私は同じ問題を抱えていましたが、これはうまくいきました
//example of an Object
var person = {
firstName:"John",
lastName:"Doe",
age:50,
eyeColor:"blue"
};
//How to access a single key or value
var key = Object.keys(person)[0];
var value = person.firstName;
var value = person[key];
?そうすれば、プルする値のキーを知る必要はありません。
以外に方法はありませんfor ... in
。それを使用したくない場合(hasOwnProperty
おそらく、各反復でテストする必要があるために効率がわずかに悪いためでしょうか?)異なる構成、たとえばkvpの配列を使用します。
[{ key: 'key', value: 'value'}, ...]
Object.keys() Object.keys()メソッドは、指定されたオブジェクト自体の列挙可能なプロパティの配列を、for ... inループで提供されるのと同じ順序で返します(違いは、for-inループがプロパティを列挙することです)プロトタイプチェーンでも同様です)。
var arr1 = Object.keys(obj);
Object.values() Object.values()メソッドは、指定されたオブジェクト自体の列挙可能なプロパティ値の配列を、for ... inループによって提供されるのと同じ順序で返します(違いは、for-inループが列挙することです)プロトタイプチェーンのプロパティも同様です)。
var arr2 = Object.values(obj);
詳しくはこちらへ
JavaScriptでオブジェクトまたはマップのキーにアクセスするための各ループに使用
for(key in foo){
console.log(key);//for key name in your case it will be bar
console.log(foo[key]);// for key value in your case it will be baz
}
注:使用することもできます
Object.keys(foo);
次のような出力が得られます。
[バー];
Object.keys機能を使用して、次のようなキーを取得できます。
const tempObjects={foo:"bar"}
Object.keys(tempObjects).forEach(obj=>{
console.log("Key->"+obj+ "value->"+tempObjects[obj]);
});