2017-04-25 59 views
0

迭代條件去除對象屬性的使用「的for..in」和「如果」

function removeNumbersLargerThan(num, obj) { 
 
    for (var key in obj) { 
 
    if (!isNaN(obj[key]) && obj[key] > num) { 
 
     delete obj.key; 
 
    } 
 
    } 
 
    return obj; 
 
} 
 
var obj = { 
 
    a: 8, 
 
    b: 2, 
 
    c: 'montana' 
 
} 
 
removeNumbersLargerThan(5, obj); 
 
console.log(obj); // Should be {b: 2, c: 'montana'}
該函數應刪除符合內部的「for」循環的「如果」條件的任何屬性,但它不」噸。

+0

作爲每個人都在給你相同的答案取代delete obj.key;,但沒有人解釋*爲什麼*您需要括號:在您的例子中,' key'變量是一個*'string' *。如果你想使用'delete obj.key'符號,'key'必須是你想要刪除的密鑰的實際名稱。要通過名稱將字符串作爲字符串刪除,您需要執行delete obj [「myKey」]。 – Santi

回答

3

您錯過了方括號,同時定義了要刪除的對象鍵。

function removeNumbersLargerThan(num, obj) { 
 
    for (var key in obj) { 
 
    if (!isNaN(obj[key]) && obj[key] > num) { 
 
     delete obj[key]; 
 
    } 
 
    } 
 
    return obj; 
 
} 
 
var obj = { 
 
    a: 8, 
 
    b: 2, 
 
    c: 'montana' 
 
} 
 
removeNumbersLargerThan(5, obj); 
 
console.log(obj); // Should be {b: 2, c: 'montana'}

1

你應該delete obj[key];