如何使用'in'运算符/回调检查对象值是否存在

时间:2017-10-10 15:39:09

标签: javascript

我有:

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 })

我可以使用'in'运算符/回调/其他样式吗?

编辑: 感谢您的评论, 我的意思是如果可以使用这样的语法(这不起作用):

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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 } ]