Return 如果字符串 == "",则为空数组
Return an empty array if string == ""
我正在重写旧的 table 排序库。在库中,我有这个方法从 table:
获取一些属性
<table data-sort-cols="" data-sort-orders="">
getSortInfo : function(element) {
switch (element.tagName) {
case "TABLE":
function getSortAttr(element, attr) {
var info = element.getAttribute(attr);
if (info != "") {
info = info.split(",").map(function(val) { return parseInt(val,10) });
} else {
info = [];
}
return info;
};
return {
columns : getSortAttr(element, "data-sort-cols"),
orders : getSortAttr(element, "data-sort-orders"),
}
我想缩短 getSortAttr
函数。函数 returns 分配的值(例如“1,3,2” -> [1,3,2])。如果没有为该属性分配值,则它 return 是一个空数组。我想去掉 if 语句。
有没有办法修改这一行,如果字符串为空 return 则使其成为一个空数组 ""
?
info = info.split(",").map(function(val) { return parseInt(val,10) });
我试过了
// returns [NaN]
"".split(",").map(function(val) {
return parseInt(val, 10);
})
// returns [undefined]
"".split(",").map(function(val) {
var num = parseInt(val, 10);
if (!isNaN(num) && isFinite(num)) {
return num;
}
})
但没用。
下面的函数会检查if info == ""
,如果info == "",那么它会return一个空数组,如果不是,它会拆分信息字符串并映射它。这称为 shorthand
if 语句。
info = (info == "") ? [] : info.split(",").map(function(val) { return parseInt(val,10) });
您还可以在shorthand条件中添加更多条件,例如:
(info == "" || info != undefined || info != null)
如果上述 info == ""
不起作用,这可能意味着 info
未定义。为了解决这个问题,我们可以使用以下语句:
(typeof(info) != undefined)
您可以使用
function getSortAttr(element, attr) {
return (element.getAttribute(attr) || "").split(",").filter(Boolean).map(Number);
}
在将它们映射到数字之前从数组中过滤掉空字符串。
我正在重写旧的 table 排序库。在库中,我有这个方法从 table:
获取一些属性<table data-sort-cols="" data-sort-orders="">
getSortInfo : function(element) {
switch (element.tagName) {
case "TABLE":
function getSortAttr(element, attr) {
var info = element.getAttribute(attr);
if (info != "") {
info = info.split(",").map(function(val) { return parseInt(val,10) });
} else {
info = [];
}
return info;
};
return {
columns : getSortAttr(element, "data-sort-cols"),
orders : getSortAttr(element, "data-sort-orders"),
}
我想缩短 getSortAttr
函数。函数 returns 分配的值(例如“1,3,2” -> [1,3,2])。如果没有为该属性分配值,则它 return 是一个空数组。我想去掉 if 语句。
有没有办法修改这一行,如果字符串为空 return 则使其成为一个空数组 ""
?
info = info.split(",").map(function(val) { return parseInt(val,10) });
我试过了
// returns [NaN]
"".split(",").map(function(val) {
return parseInt(val, 10);
})
// returns [undefined]
"".split(",").map(function(val) {
var num = parseInt(val, 10);
if (!isNaN(num) && isFinite(num)) {
return num;
}
})
但没用。
下面的函数会检查if info == ""
,如果info == "",那么它会return一个空数组,如果不是,它会拆分信息字符串并映射它。这称为 shorthand
if 语句。
info = (info == "") ? [] : info.split(",").map(function(val) { return parseInt(val,10) });
您还可以在shorthand条件中添加更多条件,例如:
(info == "" || info != undefined || info != null)
如果上述 info == ""
不起作用,这可能意味着 info
未定义。为了解决这个问题,我们可以使用以下语句:
(typeof(info) != undefined)
您可以使用
function getSortAttr(element, attr) {
return (element.getAttribute(attr) || "").split(",").filter(Boolean).map(Number);
}
在将它们映射到数字之前从数组中过滤掉空字符串。