用JavaScript过滤不起作用

时间:2016-08-02 14:45:50

标签: javascript angularjs

我在Javascript中有一系列元素,我想根据它的属性进行过滤。

现在,我要过滤的响应对象看起来像:

enter image description here

单个对象可能有"I" "L""I"

我想只获得 referenceDataRecord.filter(isInactive); function isInactive(obj) { return obj.row_stat_cd != "L"; }; angular.forEach(referenceDataRecord, function (k, v) { ......... 条记录。所以我做了..

"I"

但仍然referenceDataRecord包含所有记录。它没有被过滤,只保留switch (objectType) { case "Armor": Item compareItem = player.armor; break; case "Shield": Item compareItem = player.shield; break; case "Medikit": Item compareItem = player.medikit; break; case "Grenade": Item compareItem = player.grenade; break; case "Weapon": Item[] compareItem = player.weapons; break; case "Bullet": Item [] compareItem = player.bullets; break; default: return; } 条记录。

2 个答案:

答案 0 :(得分:3)

filter方法本身不会修改数组。您必须设置对变量的引用

referenceDataRecord = referenceDataRecord.filter(isInactive);

    function isInactive(obj) {
        return obj.row_stat_cd != "L";
    };

    angular.forEach(referenceDataRecord, function (k, v) {
  

filter()方法创建一个 new array ,其中包含通过所提供函数实现的测试的所有元素

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter

答案 1 :(得分:1)

Array.prototype.filter返回带有过滤项的新数组。除非您将原始数组分配给函数的输出,否则不会更改原始数组。

referenceDataRecord = referenceDataRecord.filter(isInactive);

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter