2016-04-19 111 views
0

我需要創建一個名爲onlyTruthy的函數,它接受一個對象,遍歷其所有屬性,並刪除任何僞造的東西。然後返回傳入的對象。但是我對如何使它變得真實或虛假感到困惑。這是我迄今爲止所擁有的。Javascript循環對象

function onlyTruthy (val) { 
    for (var key in val) { 
     if (val.hasOwnProperty(key)) { 
      alert(key + " -> " + val[key]); 
     } 
    } 
    return val; 
} 

回答

-1

我覺得這是更好地創建一個新的變量來保存的唯一的真正價值的財產現有的對象,因爲我如下圖所示:

var yourOldObject; /* some data in it */ 
var newObject = onlyTruthy(yourOldObject); /* newObject variable holds only true values now */ 

function onlyTruthy (val) { 
    var newObj = {}; 
    for (var key in val) { 
     if (val.hasOwnProperty(key) && val[key]) { 
      newObj[key] = val[key]; 
     } 
    } 
    return newObj; 
} 
+0

數據只能是數字嗎?還是文字?或混合? –

+0

@OsmerhChichia你能舉個例子嗎? –

+0

你是個天才! –

2

我認爲你可以使用!來檢查它是否是falsy和刪除操作刪除

function onlyTruthy(val) { 
    for (var key in val) { 
    if (val.hasOwnProperty(key) && !val[key]) { 
     delete val[key]; 
    } 
    } 
    return val; 
} 
+1

爲什麼'返回VAL;''裏面for'? _that在一個對象,循環其所有屬性,並刪除任何falsy_ – Tushar

+0

@Tushar有一個支架缺少,沒有正確檢查時添加它 –

+0

我編輯了原來的問題,添加缺少的右括號。 – jkdev

-1

你可以簡單地用自己的對象替換對象(其中有一些propperties)

for (var property in object) { 
if (object.hasOwnProperty(property)) { 
    alert(' the Key is : '+ property + ' And the value is : ' + object[property]); 
} 
} 

你可以通過你的烏爾班或任何其他對象

+0

這裏是工作示例:https://jsfiddle.net/0ezrg7xr/ –

0

下面的實例改變對象是最簡單,最有效的:

var car = { 
    make: "bmw", 
    model: "328i", 
    year: "2012", 
    color: null, 
    mileage: undefined, 
    doors: false, 
    cylinders: "" 
}; 


onlyTruthy=(o)=>{ 
    Object.keys(o).forEach((p)=>(!o[p])?delete o[p]:null); 
    return o; 
}