2016-04-11 21 views
0

問題を解決するのを手伝ってください。オブジェクトから特定のプロパティを選択する方法は?

私は次のオブジェクトがあります。

defaults = { 
    title: undefined, 
    yMax: undefined, 
    yMin: undefined, 
    yPeriod: undefined, 
    xMax: undefined, 
    xMin: undefined, 
    xPeriod: undefined, 
    dots: {} 
    } 

私は「反対しない」タイプのものであるプロパティの配列を取得する必要があります。

私は従ってもらう必要があるすなわち:

[title, yMax, yMin, yPeriod, xMax, xMin, xPeriod] 
+1

名前を付けたいですか?またはその価値?上記の例では不明です。 –

答えて

1

あなたはtypeof

var defaults = { 
 
    title: undefined, 
 
    yMax: undefined, 
 
    yMin: undefined, 
 
    yPeriod: undefined, 
 
    xMax: undefined, 
 
    xMin: undefined, 
 
    xPeriod: undefined, 
 
    dots: {} 
 
} 
 

 
var a = []; 
 
for (prop in defaults) { 
 
    if (typeof defaults[prop] != 'object') a.push(prop); 
 
} 
 

 
console.log(a);

+0

Arrayはtypeof演算子を使用するオブジェクトと見なされることに注意してください。 – edrian

1

Object.keys()Array#filter()とES6で1行だけを各プロパティの種類を確認することができます。

var defaults = { title: undefined, yMax: undefined, yMin: undefined, yPeriod: undefined, xMax: undefined, xMin: undefined, xPeriod: undefined, dots: {} }, 
 
    keys = Object.keys(defaults).filter(a => typeof defaults[a] !== 'object'); 
 

 
document.write('<pre>' + JSON.stringify(keys, 0, 4) + '</pre>');

またはES5は1行で、あまりにも

var defaults = { title: undefined, yMax: undefined, yMin: undefined, yPeriod: undefined, xMax: undefined, xMin: undefined, xPeriod: undefined, dots: {} }, 
 
    keys = Object.keys(defaults).filter(function (a) { return typeof defaults[a] !== 'object'; }); 
 

 
document.write('<pre>' + JSON.stringify(keys, 0, 4) + '</pre>');

0

あなたは、このすべての機能スタイルをやってみたかった場合、あなたはObject.keysArray.prototype.filterを組み合わせることができが、およびArray.prototype.map

var arr = Object.keys(defaults).filter(function(key) { 
    return typeof defaults[key] !== 'object'; 
}).map(function(key) { 
    return defaults[key]; 
}); 

またはES6を使用して、これと同じものを書く:

let arr = Object.keys(default) 
    .filter(key => typeof defaults[key] !== 'object') 
    .map(key => defaults[key]); 

これはあなたのオブジェクト(これは配列も除外されることを意味します)ではありませんデフォルトですべての値を取得します。キーだけが必要な場合は、map機能を削除してください。

関連する問題