变换数组不考虑null返回

时间:2016-03-08 02:21:36

标签: javascript

我想以这种方式转换数组:

  • false值变为0
  • 真值变为1
  • null值rest null

我使用了这个功能:



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>
&#13;
&#13;
&#13;

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

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

任何想法? 感谢

3 个答案:

答案 0 :(得分:2)

根据jQuery $.map() documentation,只有非空或未定义的返回值包含在结果数组中。

使用Javascript的native array .map() method代替,因为在新数组中放置空值。

(较旧的IE不支持数组.map()方法,但鉴于您使用的是jQuery 2.x,您的代码也不支持旧的IE。)

答案 1 :(得分: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 ]

答案 2 :(得分:1)

根据文档,$ .map删除空值...

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

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]
            }
        });