Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript提示-如何添加不需要编写大量ifs的对象_Javascript - Fatal编程技术网

javascript提示-如何添加不需要编写大量ifs的对象

javascript提示-如何添加不需要编写大量ifs的对象,javascript,Javascript,我有一个有3个参数的对象。在某些情况下,其中一个参数可以为空 如果其中一个参数不存在,是否有快速、干净的编码来执行以下代码,而不会出现错误 var str = object.x && + object.y + object.z 试试这个 var str=((object.x==undefined)?0:object.x)+((object.y==undefined)?0:object.y)+((object.z==undefined)?0:object.z) 还是干净的方式

我有一个有3个参数的对象。在某些情况下,其中一个参数可以为空

如果其中一个参数不存在,是否有快速、干净的编码来执行以下代码,而不会出现错误

var str = object.x &&  + object.y + object.z
试试这个

var str=((object.x==undefined)?0:object.x)+((object.y==undefined)?0:object.y)+((object.z==undefined)?0:object.z)
还是干净的方式

var a=(object.x==undefined)?0:object.x;
var b=(object.y==undefined)?0:object.y;
var c=(object.z==undefined)?0:object.z;

var str=a+b+c;

如果str是一个字符串,那么您应该使用空字符串而不是0。

一种简单明了的添加方法是:

var str = (object.x || '') + (object.y || '') + (object.z || '');

您可以实现自己的功能,这将为您实现:

函数sumExisting(){
函数是否有效(n){
返回类型n=='number'&&!isNaN(n)&&isFinite(n);
}
var args=Array.prototype.filter.call(参数,isValid);
return args.reduce(函数(a,b){return a+b;},0);
}
//演示:
变量o={
答:1,,
b:3.4,
c:错,
d:‘qwe’,
e:空
};
var总和=现有的总和(o.a、o.b、o.c、o.d、o.e、o.f);

控制台日志(总和)你是指一个对象的属性吗?一种方法是定义你自己的快捷函数。var str=(object.x | | 0)+(object.y | | 0)+(object.z | | 0)最短最简单的方法在当前的示例中,只有当
对象本身为null或未定义时才会发生错误(object.x+object.y+object.z);
x
y
z
属性不需要存在于
object
上,因为默认情况下属性访问器(句点)只会返回
未定义的
。@JonathanLonowski-可能是“错误”OP只是指一个不想要的结果,比如
'testundefinedsomething'
,而不是
'testsomething'
?(一个逻辑错误而不是异常)如果将最终结果分配给名为
str
的对象,我怀疑空字符串的默认值可能比零的默认值要好,但无论如何,使用
var str=(object.x||0)+(object.y|0)不是更整洁吗…
?如果str是一个字符串,则肯定是正确的。如果str是一个整数,则我的ans为真。好的,我要提到它。如果值可能是数字0或布尔值false,则有一些可能的错误,但这是一种快速且肮脏的方法。是的,这个答案假设值是字符串,如果它们存在的话。