2015-12-09 32 views
-2

好的。取得一些進展:循環作爲參數傳遞的對象的所有屬性並更改它們的值(已解決)

var func = function(change){ 
    for (var property in change) { 
    if (change.hasOwnProperty(property)) { 
     change[property] = "changed" 
     return change 
    } 
    } 
} 

它正確返回第一個值。

當我在間諜傳= {A 1,B:2,C:3} 返回的是一個: 「改變」,B:2,C:3

我想使用for..if將基本上通過obj上的每個項目?

+2

目前還不清楚這段代碼應該做什麼。 – zerkms

+0

我認爲你的意思是**參數**,而不是屬性 – hindmost

+0

_循環遍歷func對象上的所有屬性......_你的代碼不同:通過第一個func參數的屬性循環 – hindmost

回答

1

你的意思是循環的對象,你傳遞作爲參數的所有屬性,並改變它們的值改變爲」 「

function func(change) { 
    Object.keys(change).forEach(function(key) { 
    change[key] = 'changed'; 
    }); 
}; 
var obj = { 
    a: 1, 
    b: 2, 
    c: 3 
}; 
func(obj); 
console.log(obj); 

您的功能不需要return,因爲您正在更改通過引用傳遞的對象值。

+0

我正在使用return來檢查我的輸出是否正確。這完美的工作!我想我正在把一切都變得複雜,我不知道「for each」 謝謝! –

+0

對不起,誤導性的措辭。我熟悉Ruby,但JS對我來說似乎仍然有點過時。 –

0

我認爲你正在尋找這個。你的變量不會作爲'。'的一部分工作。符號。您必須使用括號才能完成此操作。

var func = function(change){ 
    for (var property in change) { 
    if (func.hasOwnProperty(property)) { 
     func[property] = "changed" 
    } 
    } 
    return func 
} 
+0

你認爲什麼類型的'change'? – zerkms

+0

我不知道,它只是好像他試圖將變量設置爲對象的屬性名稱。我可能會離開:p – DvideBy0

+0

「我不知道」---然後你建議將它用作屬性名稱。你認爲這有意義嗎? – zerkms

0

如果你的意思是改變所有argumetns

var func = function(){ 
    for (var i=0;i<arguments.length;i++) 
     arguments[i]='changed' 
    return arguments; 
} 

例如:

func('a',b'c') // return ['changed','changed','changed'] 
相關問題