2016-03-08 39 views
0

我想以这种方式来变换数组:变换数组不考虑空回报

  • 假值变为0
  • 真值成为1
  • 空值的休息空

我用这个功能:

var arr = [true, false, false, true, true, null, null, null, null]; 
 

 
var result = $.map(arr, function (val, i) { 
 
      if (val == false) { 
 
       return 0 
 
      } else if (val == true) { 
 
       return 1 
 
      } else { 
 
      return null 
 
      } 
 
     }); 
 

 
$("#result").text(result)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<div id="result"> 
 
    
 
</div>

该函数返回[1,0,0,1,1]; ...

我想要的= [1,0,0,1,1,null,null,null,null];

任何想法? 谢谢

+1

你看了$ .MAP()DOCO?如果要在结果数组中包含空值,则不能使用$ .map()。 – nnnnnn

+0

显然不是,因为文档指出返回null删除元素。 –

+0

噢,是的,我错过了这部分,谢谢 – taboubim

回答

1

您可以通过使用简单的做到这一点很容易JavaScript的.map()

var arr = [true, false, false, true, true, null, null, null, null]; 

var result = arr.map(function (val, i) { 
    if (val === false) { 
     return 0; 
    } else if (val === true) { 
     return 1; 
    } else { 
     return null; 
    } 
}); 

console.log(result) // Array [ 1, 0, 0, 1, 1, null, null, null, null ] 
+0

工作正常,谢谢 – taboubim

1

根据文档的$ .MAP删除空值...

有我们可以使用空值[空],而不是...

var arr = [true, false, false, true, true, null, null, null, null]; 
 

 
var result = $.map(arr, function (val, i) { 
 
      if (val == false) { 
 
       return [0] 
 
      } else if (val == true) { 
 
       return [1] 
 
      } else { 
 
      return [null] 
 
      } 
 
     });

+1

很好的解决方法。我没有这样做过。 (你不应该需要1和0左右的方括号,尽管它们不会受到伤害。) – nnnnnn