我想知道我的代码是否接近是好的,我想:
我现在拥有的是以下代码,但我不喜欢两次写同一行
function doSomething(_whatever){
if(typeof someobject === "undefined"){
someobject = { //dont exist
profile : "some value",
status : []
}
someobject.status.push(_whatever);
}else{
someobject.status.push(_whatever); //because already exist
}
}
编写此代码段的更好方法是什么?或者做得更好,重复性更低?
提前致谢
------原始功能
function addPerson(_person){
var people = Iee.dashboard.analytics.data.people.data;
if(typeof people[_person.Id_Emp] === "undefined"){
people[_person.Id_Emp] = {
profile : _person,
status : []
}
people[_person.Id_Emp].status.push({Id_Emp : _person.Id_Emp, status : _person.Estatus1, estatusby : _person.Centro_de_trabajo});
}else{
people[_person.Id_Emp].status.push({Id_Emp : _person.Id_Emp, status : _person.Estatus1, estatusby : _person.Centro_de_trabajo});
}
addBlackList(_person);
}
答案 0 :(得分:4)
执行此操作的常用方法是进行冗余检查:
someobject = someobject || {
project:"some value",
status:[]
};
答案 1 :(得分:4)
简化代码
function addPerson(_person){
var people = Iee.dashboard.analytics.data.people.data;
people[_person.Id_Emp] = people[_person.Id_Emp] || {
profile : _person,
status : []
};
people[_person.Id_Emp].status.push({Id_Emp : _person.Id_Emp, status : _person.Estatus1, estatusby : _person.Centro_de_trabajo});
addBlackList(_person);
}
答案 2 :(得分:1)
在这种情况下,你希望它是一个对象或未定义的,而不是一个字符串,一个数字等,所以你可以检查它是否有一个真值。
function addPerson(_person) {
var people = Iee.dashboard.analytics.data.people.data,
person = people[_person.Id_Emp];
if (!person) person = {
profile: _person,
status: []
};
person.status.push({
Id_Emp: _person.Id_Emp,
status: _person.Estatus1,
estatusby: _person.Centro_de_trabajo
});
addBlackList(_person);
}
这应该比其他答案中提到的冗余检查略好一些,因为如果(truthy)值尚未存在,它只会为变量赋值。
只是为了好玩,这是一个超精简版:
function addPerson(_person) {
var people = Iee.dashboard.analytics.data.people.data, id = _person.Id_Emp;
(people[id] || { profile: _person, status: [] }).status.push({
Id_Emp: id, status: _person.Estatus1, estatusby: _person.Centro_de_trabajo
});
addBlackList(_person);
}