2017-02-26 30 views
3

より大きい番号で任意のプロパティを削除します:)その値が与えられた数

私はその値が与えられた数よりも多い数である特性を削除する必要があります。私はこの質問を見てきました:How do I remove a property from a JavaScript object?とこの1つ:Remove some properties from array of javascript objectsとこの1つ:remove item from array javascriptしかし、私はまだ私が必要とする答えを得ることができないようです。 (彼らは数字のみを返すか、私は必要としない、アレイの他の部分だのいずれか。)

これは私が書いたコードです:

function removeNumbersLargerThan(num, obj) { 
arr = []; 
for (var i = 0; i < obj.length; i++) { 
return arr[i] > 5; 
} 
} 
var obj = { 
    a: 8, 
    b: 2, 
    c: 'montana' 
}; 
removeNumbersLargerThan(5, obj); 

これは私の結果である:

console.log(obj); // => { a: 8, b: 2, c: 'montana' } 

正しいにconsole.logはこのかかわらず、次のようになります。

{ b: 2, c: 'montana' } 

任意のアドバイスはありますか?ありがとうございました! PS:ルールに従うことを試みているにもかかわらず、私は新しいですし、私の質問はたくさん下がっているようです。私が間違って投稿していると、誰かが私を傷つけると間違っていることを私に知らせることができますか?このように私は改善することができます。私は学ぶためにここにいる! :Dありがとう!

答えて

4

function removeNumbersLargerThan(num, obj) { 
 
    for (var key in obj) {     // for each key in the object 
 
    if(!isNaN(obj[key]) && obj[key] > num) // if the value of that key is not a NaN (is a number) and if that number is greater than num 
 
     delete obj[key];      // then delete the key-value from the object 
 
    } 
 
} 
 

 
var obj = { 
 
    a: 8, 
 
    b: 2, 
 
    c: 'montana' 
 
}; 
 

 
removeNumbersLargerThan(5, obj); 
 

 
console.log(obj);

+1

素敵な解決策、upvoted。 –

+1

答えに沿って説明してくれてありがとう!非常に役立ちます!! :D – learninghowtocode

2

Object.keys()関数は、指定されたオブジェクトのすべてkeysを配列として返します。それから、指定されたキーが指定されたキーより大きいかどうかを確認し、もしあればそれを削除します。質問の

var obj = { a: 8, b: 2, c: 'montana', d: 12 }; 
 

 
function clean(obj, num){ 
 
    Object.keys(obj).forEach(v => obj[v] > num ? delete obj[v] : v); 
 
    console.log(obj); 
 
} 
 

 
clean(obj, 5);

+0

グレート、簡潔な答えであれば、オブジェクトのプロパティを削除することができますが、おそらく新しいプログラマーにとって恐ろしいビットであり、少し説明が必要な場合があります。 – Mitch

+0

ありがとう! – learninghowtocode

+0

@ミッチそれはされています。 –

2

javascriptオブジェクトのプロパティ値をチェックしません。あなたは、プロパティと値を反復処理するプロパティのキーと値のペア、for..ofループの配列を取得するためにObject.entries()を使用して値が等しいかより大きい5

function removeNumbersLargerThan(num, obj) { 
    for (let [key, value] of Object.entries(obj)) { 
    if (typeof value === "number" && value > 5) delete obj[key] 
    } 
} 
関連する問題