如果在JavaScript中为null或未定义,则replace值

我有一个要求应用?? C#运营商到JavaScript,我不知道如何。 考虑这个在C#中:

 int i?=null; int j=i ?? 10;//j is now 10 

现在我已经在JavaScript中设置了这个:

 var options={ filters:{ firstName:'abc' } }; var filter=options.filters[0]||'';//should get 'abc' here, it doesn't happen var filter2=options.filters[1]||'';//should get empty string here, because there is only one filter 

我如何正确地做到这一点?

谢谢。

编辑:我发现一半的问题:我不能使用“索引器”表示法( my_object[0] )。 有没有办法绕过它? (我不知道事先的filter属性的名称,不想迭代它们)。

这里是JavaScript的等价物:

 var i = null; var j = i || 10; //j is now 10 

请注意, 逻辑运算符|| 不会返回一个布尔值,但可以转换为true的第一个值。

另外使用一个对象数组而不是一个对象:

 var options = { filters: [ { name: 'firstName', value: 'abc' } ] }; var filter = options.filters[0] || ''; // is {name:'firstName', value:'abc'} var filter2 = options.filters[1] || ''; // is '' 

这可以通过索引访问。

我发现一半的问题:我不能使用'索引器'符号对象(my_object [0])。 有没有办法绕过它?

没有; 正如名字所暗示的,一个对象字面值是一个对象 ,而不是一个数组,所以你不能简单地根据一个索引检索一个属性,因为没有特定的属性顺序。 检索其值的唯一方法是使用特定的名称:

 var someVar = options.filters.firstName; //Returns 'abc' 

或者使用for ... in循环遍历它们:

 for(var p in options.filters) { var someVar = options.filters[p]; //Returns the property being iterated }