2016-10-02 22 views
1

これは簡単なはずですが、私は今日脳のおならを持っています。 ..だから数字だけで文字列には適用しないでください

var cat = { 
name: 'catcat', 
age: 6, 
color:'brown' 
} 

私は数字だけが乗取得したオブジェクトを返すようにしたいです。これまでのところ、私が持っている..

function squareNumValues(object) { 
    var newObj = {}; 
    if (object[key] = number)     
    for (var key in object) { 
     newObj.push(Math.pow(object[key],2)); 
    } 
    return newObj; 
} 

は、だから私は、この新しいオブジェクトは、次のようになりたい:(オブジェクト[キー])=数、私が知っている場合は3行目の

var cat = { 
name: 'catcat', 
age: 36, 
color:'brown' 
} 

は私が を持っています間違っていますが、私は正しい道にいるように感じます。どんな勧告?ありがとう!

編集:ここでもtypeof演算子を使用します。あるpush、と

newObj[key] = ... // property accessor with brackets and a variable 
newObj['name'] = ... // property accessor with brackets and a string 
newObj.name = ... // property accessor with dot, same as above 

ないようなオブジェクトは、プロパティに直接割り当てて、そのプロパティを取得するので、あなたは、オブジェクトに別の割り当てを必要とする

if (typeof object[key] === 'number') { 

のチェックのほかに

+1

'typeof' ......... – zerkms

+0

' for(var prop in cat)typeof cat [prop] === "number" &&(cat [prop] = Math.pow(cat [prop] 、2)); ' – Redu

答えて

2

、配列のメソッド。

newObj[key] = Math.pow(object[key], 2); 

function squareNumValues(object) { 
 
    var newObj = {};   
 
    for (var key in object) { 
 
     if (typeof object[key] === 'number') { 
 
      newObj[key] = Math.pow(object[key], 2); 
 
     } else { 
 
      newObj[key] = object[key]; 
 
     } 
 
    } 
 
    return newObj; 
 
} 
 
var cat = { 
 
     name: 'catcat', 
 
     age: 6, 
 
     color: 'brown' 
 
    }; 
 

 
console.log(squareNumValues(cat));

Object.keysArray#forEachconditional operator?:有するコンパクトなバージョン。

function squareNumValues(object) { 
 
    var newObj = {}; 
 
    Object.keys(object).forEach(function (k) { 
 
     newObj[k] = typeof object[k] === 'number' ? 
 
      Math.pow(object[k], 2) : 
 
      object[k]; 
 
    }); 
 
    return newObj; 
 
} 
 
var cat = { name: 'catcat', age: 6, color: 'brown' }; 
 

 
console.log(squareNumValues(cat));

+0

' new Number(6) 'は有効な数値ですが、typeofは' object'を返します。 'のようなものobject [key] instanceof Number'はこのようなインスタンスにはいいでしょうか、またはすぐに '!isNaN'を使用します – Ultimater

+0

@Ultimaterそれは"有効な "番号ではありません("有効な番号 "の定義はどこから来ているのでしょうか) 、それはオブジェクトです(標準およびESタイプのシステムに従って)。 – zerkms

0

また、与えられた値が数値であるかどうかを決定するために(が数されていない))ますisNaN(という名前の関数を使用することができます。

+1

'null'または' true'の値は実際にはありません:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/isNaN#Examples –

+1

それは間違っています: 'isNaN'関数は、値がNaNの値であるかどうかをチェックするように設計されています。 'NaN'は値が数値であるかどうかとは無関係です。 https://zerkmsit.wordpress.com/2016/04/21/nan-is-not-a-not-a-number/ – zerkms

関連する問題