JavaScript

for in文とfor文 

More than 3 years have passed since last update.

for in文だとプロトタイプチェーン上のプロパティまで列挙されてしまう

そのため、自身のプロパティだけを判別して列挙するためにはtypeofまたはhasOwnPropertyを使います


for_in.js

//typeofを用いた場合

for (name in obj) {
if (typeof(obj[name]) !== 'function') {
console.log(name+'は自身のプロパティです');
}
}

//hasOwnPropertyを用いた場合
for (name in obj) {
if(obj.hasOwnProperty(name)) {
console.log(name+'は自身のプロパティです');
}
}


しかし、for文だと

配列の場合


for.js

for (i=0; i<arr.length; i++) {

var name=i;
console.log(name+'は自身のプロパティです');
}

とシンプルにかける。

オブジェクトの場合、underscorejsを用いると簡単にできます


for_obj.js

var obj = {

id : 1,
name : 'Tanaka',
age : 23,
living : true,
birthday : '1998/12/24'
};

_.reduce(obj, function(result, value, key){
console.log(key+'は、自身のプロパティです');
console.log('値は、'+value+'です');
return 0;
},0);


以上、お役に立てれば幸いです。