2017-10-10 48 views
-2

我:如何檢查是否存在對象值「的」操作員/回調使用

arrFrom = [{a: 1, b: 1}, {a: 1, b: undefined}] 
arrTo = [] 

我嘗試從arrFrom創造新arrTo:

for (let value of arrFrom){ 
arrTo.push({x: value.a, y: value.b }) 
} 

我需要捕捉不定值。 我知道,我可以使用的功能或操作符,如:

arrTo.push({x: value.a, y: value.b || 0 }) 
arrTo.push({x: value.a, y: value.b ? value.b: 0 }) 

我可以用「在」運營商/回調/其他風格?

編輯: 感謝意見, 我的意思是,如果可以使用如下語法(這不起作用):

arrTo.push({x: value.a, y: ('undefined' in value.b) ? true: 0 }) 
+0

的可能的複製[如何檢查「未定義」在JavaScript?](https://stackoverflow.com/questions/3390396/how-to-check-for-undefined-in-javascript) – MaxZoom

+4

你的點符號是倒退。它應該是'value.a'和'value.b'。 – 4castle

+1

你已經提出的解決方案有什麼問題?我不確定我是否理解這個問題。 – 4castle

回答

1
arrTo.push({x: a.value, y: b.value || 0 }) 

我認爲這是一個非OP,0永遠不會因爲永遠是虛假的。 然後你可以使用:

arrTo.push({x: a.value, y: ('value' in b) ? b.value: 0 }) 

檢查undefined是一個很長的故事,但我總是習慣:

typeof value != 'undefined' && value !== null 
+0

'a'和'b'不是定義變量,'value'是,'a'和'b'是'value'的字段。 – 4castle

+0

謝謝你的想法,不幸的是這不起作用 'arrTo.push({x:a.value,y:('undefined'in b)?true:0})' – gGotcha

+0

obj = {a:1,b: undefined} copy = {}; if('b'in obj)copy.b = obj.b; 你需要先閱讀一些Javascript的書... – David

0

你的意思是這樣做:

arrFrom = [{a: 1, b: 1}, {a: 1, b: undefined}]; 
arrTo = []; 
for (var value of arrFrom){ 
arrTo.push({x: value.a, y: value.b || 0 }) 
} 
console.log(arrTo); // [ { "x": 1, "y": 1 }, { "x": 1, "y": 0 } ]