私は古いテーブルソートライブラリを書き直しています。ライブラリーでは、私はテーブルからいくつかの属性を取得し、このメソッドを持っている:文字列== ""なら空の配列を返します
<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
機能を短くしたいです。関数は割り当てられた値を返します(「1,3,2」→「1,3,2」など)。属性に割り当てられた値がない場合は、空の配列を返します。私はif文を取り除きたい。
この行を変更し、文字列が空の場合は空の配列を返しますか?""
?
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;
}
})
を試みたが、うまくいきませんでした。
Til ES6では、その関数宣言はその位置では無効です。 'switch'ステートメントの外側に移動する方が良いでしょう。 – Bergi
元はswitch文の外側にあり、メインオブジェクトの別のメソッドとして宣言されています。テストのatm。しかし、通知をありがとう。 – akinuri
なぜ 'if'文を取り除きたいのですか?受け入れられた答えのようにフィルターを使うよりも、地図の前に一度入力を確認する方が、配列のすべての要素を不必要にチェックするので、入力を確認する方が良いでしょう。 – Barmar