如何从布尔对象

时间:2017-10-10 15:53:56

标签: javascript angularjs arrays

我很确定有类似的东西,但我无法在我的范围内找出这个。我有一个数组,我需要基于一个对象创建另一个数组(在这种情况下,BannerAtivo: true)。

我的JSON:

[{
    "BannerID": 0,
    "BannerImage": "http://hotsite/example2.png",
    "BannerMin": "http://hotsite/example.png",
    "BannerTitulo": "Xurupita Style",
    "BannerDesc": "Lorem Ipsum Dolor Siamet",
    "BannerAtivo": false,
    "SetorId": 1
}, {
    "BannerID": 2,
    "BannerImage": "http://hotsite/example2.jpg",
    "BannerMin": "http://hotsite/example.jpg",
    "BannerTitulo": "Chihuahua",
    "BannerDesc": "Role",
    "BannerAtivo": true,
    "SetorId": 1
}]

我正在尝试以下代码:

var data = response.data;
$scope.banners = data;
var a = $scope.banners;
function check(a) {
    return a.BannerAtivo = true;
    console.log(BannerAtivo);
}

我想要的是:仅在我的范围内显示对象BannerAtivotrue所在的列表。我已经尝试了过滤器,并且无法弄清楚如何制作它。我甚至无法在控制台上显示它。我知道这个问题很愚蠢,是的,我是javascript和有角度的新手。遗憾。

3 个答案:

答案 0 :(得分:1)

您实际上已将true分配给check函数中的变量,而不是实际检查该值。此外,console.log语句在return语句之后没有意义,因为它代表了永远无法访问的代码。

现在要解决您的问题,您需要做的就是根据布尔值过滤您的数组:

$scope.banners = response.data.filter((value) => {
    return value.BannerAtivo;
});

答案 1 :(得分:1)

如果您发布的JSON最终在response,那么您需要在filter()上运行response,而不是response.data

以下是工作示例代码:



var response = [{
  "BannerID": 0,
  "BannerImage": "http://hotsite/example2.png",
  "BannerMin": "http://hotsite/example.png",
  "BannerTitulo": "Xurupita Style",
  "BannerDesc": "Lorem Ipsum Dolor Siamet",
  "BannerAtivo": false,
  "SetorId": 1
}, {
  "BannerID": 2,
  "BannerImage": "http://hotsite/example2.jpg",
  "BannerMin": "http://hotsite/example.jpg",
  "BannerTitulo": "Chihuahua",
  "BannerDesc": "Role",
  "BannerAtivo": true,
  "SetorId": 1
}];

$scope = {};
$scope.banners = response.filter(banner => banner.BannerAtivo);
console.log($scope.banners);




答案 2 :(得分:0)

运行此代码并在控制台中检查返回的对象数组,其中只包含true值。 你走了:

    <html>
        <body>
             <script type="text/javascript">
             //Assuming you got response here
                 var data = [
                        {
                            "BannerID": 0,
                            "BannerImage": "http://hotsite/example2.png",
                            "BannerMin": "http://hotsite/example.png",
                            "BannerTitulo": "Xurupita Style",
                            "BannerDesc": "Lorem Ipsum Dolor Siamet",
                            "BannerAtivo": false,
                            "SetorId": 1
                        },
                        {
                            "BannerID": 2,
                            "BannerImage": "http://hotsite/example2.jpg",
                            "BannerMin": "http://hotsite/example.jpg",
                            "BannerTitulo": "Chihuahua",
                            "BannerDesc": "Role",
                            "BannerAtivo": true,
                            "SetorId": 1
                        },
                        {
                            "BannerID": 2,
                            "BannerImage": "http://hotsite/example2.jpg",
                            "BannerMin": "http://hotsite/example.jpg",
                            "BannerTitulo": "Chihuahua",
                            "BannerDesc": "Role",
                            "BannerAtivo": true,
                            "SetorId": 1
                        }
                    ];

                var returnTrueData = function () {
                var result = [];
                for (var i = 0; i < data.length; i++) { //looping through array of objects
                     for (key in data[i]) { //looping through each object

                          if(key === "BannerAtivo" && data[i][key] === true) { //If the key is "BannerAtivo" and it has value 'true'
                              result.push(data[i]); //push the whole object into the result array
                         }

                    }
                 }
                 console.dir(result);
                 return result;
              }


        returnTrueData();

    </script>
</body>

为了更好地理解,请参阅如何循环对象或对象数组