Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/394.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 使用push方法向对象添加条件_Javascript_Object_Ecmascript 6_Push_For In Loop - Fatal编程技术网

Javascript 使用push方法向对象添加条件

Javascript 使用push方法向对象添加条件,javascript,object,ecmascript-6,push,for-in-loop,Javascript,Object,Ecmascript 6,Push,For In Loop,我想知道是否有办法在数组push方法中添加条件?我只希望在对象存在时将属性“provinceCodes”添加到该对象中。而不是在下面的if/else中这样做……我想知道是否有更干净的方法 const generateCountriesArray = (countriesObject) => { const countries = []; for (var key in countriesObject) { var country = countriesObject[key];

我想知道是否有办法在数组push方法中添加条件?我只希望在对象存在时将属性“provinceCodes”添加到该对象中。而不是在下面的if/else中这样做……我想知道是否有更干净的方法

const generateCountriesArray = (countriesObject) => {
const countries = [];
for (var key in countriesObject) {
    var country = countriesObject[key];

    if (typeof(country.provinceCodes) !== 'undefined')
    {
        countries.push({
            value: key,
            name: country.name,
            provinceCodes: country.provinceCodes
        });
    }
    else
    {
        countries.push({
            value: key,
            name: country.name
        });
    }
}
return countries;
})

为什么不:

countries.push({
    value: key,
    name: country.name,
    provinceCodes: country.provinceCodes
});
如果country.provinceCodes不存在,则只需将新对象中的该键设置为“未定义”,这与在大多数情况下未设置该键一样好。

您可以与一起使用。如果表达式的结果
provinceCodes!==未定义的
,短路将对包含
provinceCodes
的对象进行评估,排列将向结果对象添加属性
provinceCodes
。如果不是,表达式将计算为
false
false
将被丢弃

const generateCountriesArray=(countriesObject)=>{
常量国家=[];
for(countriesObject中的变量k){
var{key,name,provinceCodes}=countriesObject[k];
国家。推({
值:键,
名称
…provinceCodes!==未定义&&{provinceCodes}
});
}
返回国;
};
常量countriesObject={
a:{键:1,名称:1,省代码:1},
b:{键:2,名称:2},
};

log(generateCountriesArray(countriesObject))无论如何,您需要一个条件语句。这可能会减少代码长度:

const generateCountriesArray=(countriesObject)=>{
常量国家=[];
for(countriesObject中的var键){
var country=countriesObject[key];
var newObject={
值:键,
姓名:country.name
};
如果(country.provinceCodes!==“未定义”){
newObject.provinceCodes=国家/地区.provinceCodes;
}
国家。推送(新对象);
}
返回国;

}
要检查某些属性是否存在,可以使用返回truefalse的运算符,而不是
typeof(country.provinceCodes)!='未定义的“

var country={“provinceCodes”:0}
console.log(“国家/地区的provinceCodes”)

console.log(“国家/地区的provinceCodes2”)
谢谢。回答得很好!:)