0

以前の Q/A を見ましたが、あまり役に立ちませんでした。主に、何がコード化されているのか理解できませんでした。

配列内の空の値を削除しようとしています。

私の単純なアプローチ - それはうまくいきません!

私のコードは -

var colors = [a, b, c, d, e, f];
var newArray = [];
for (var i = 0; i < colors.length; i++) {
  if (colors[i] !== 'undefined' || colors[i] !== null || colors[i] !== "") {
    newArray.push(colors[i]);
  }
}
console.log(newArray.length); // == 6 
console.log(newArray) //== yellow,blue,red,,,

私の if ステートメントは、すべての要素を値でフィルタリングし、新しい配列にプッシュすると思っていたでしょう。newArray の長さを 3 に等しくする必要があり、値を保持するだけです。newArray に空の文字列""があってはなりません。

前もって感謝します。

4

5 に答える 5

4

|| の代わりに && を使用します。

var colors = ["yellow", "","red", "blue", "", ""];
var newArray = [];
for (var i = 0; i < colors.length; i++) {
  if (colors[i] !== undefined && colors[i] !== null && colors[i] !== "") {
    newArray.push(colors[i]);
  }
 }
console.log(newArray.length); // == 3 
console.log(newArray) //== yellow,blue,red,,, 
于 2013-04-23T08:45:46.933 に答える
2

|| の代わりに && を使用します。

var colors = ["yellow", "","red", "blue", "", ""];
var newArray = [];
for (var i = 0; i < colors.length; i++) {
  if (colors[i] !== undefined && colors[i] !== null && colors[i] !== "") {
    newArray.push(colors[i]);
  }
 }
console.log(newArray.length); // == 3 
console.log(newArray) //== yellow,blue,red,,, 

ユースケースでは、使用することもできます

for (var i = 0; i < colors.length; i++) {
  if (colors[i]) {
    newArray.push(colors[i]);
  }
 }

これにより、誤った値が除外されます。偽値には以下が含まれます

false
0
""
null
undefined
NaN
于 2013-04-23T08:54:57.463 に答える
0

「false」値が重要な場合:

var colors = [0,1,'a',,'',null,undefined,false,true];
    colors = colors.filter(function(e){
        return (e===undefined||e===null||e==='')?false:~e;
    });

そうしないと:

var colors = [0,1,'a',,'',null,undefined,false,true];
        colors = colors.filter(function(e){return e;});
于 2013-04-23T09:31:44.920 に答える