Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript remove()的替代方法使用严格模式时,使用一个元素过滤并隐藏所有其他元素_Javascript_Angularjs_Performance_Javascript Objects - Fatal编程技术网

Javascript remove()的替代方法使用严格模式时,使用一个元素过滤并隐藏所有其他元素

Javascript remove()的替代方法使用严格模式时,使用一个元素过滤并隐藏所有其他元素,javascript,angularjs,performance,javascript-objects,Javascript,Angularjs,Performance,Javascript Objects,我试图使用remove()从特定条件下的列表中删除除“Red”之外的所有项目,但调试时,它会出现错误: “严格模式下不允许访问函数的'arguments'属性” 在这种情况下,我是否可以使用remove的替代方案。以下是我正在使用的代码: for (var k = 0; k < homeCtrl.List.length; k++) { if (homeCtrl.ColorList[k].name != 'Red') { homeCtrl.ColorLis

我试图使用remove()从特定条件下的列表中删除除“Red”之外的所有项目,但调试时,它会出现错误:

“严格模式下不允许访问函数的'arguments'属性”

在这种情况下,我是否可以使用remove的替代方案。以下是我正在使用的代码:

for (var k = 0; k < homeCtrl.List.length; k++) {
      if (homeCtrl.ColorList[k].name != 'Red') {
            homeCtrl.ColorList.remove[k];
      }
}
for(var k=0;k
由于要从
数组中删除项目,只需使用:

var数组=[
{  
“id”:1,
“名称”:“红色”
},
{  
“id”:2,
“名称”:“蓝色”
},
{  
“id”:3,
“名称”:“红色”
},
{  
“id”:4,
“名称”:“绿色”
},
{  
“id”:5,
“名称”:“红色”
}
];
var withoutRed=array.filter(函数(值){
返回value.name!=“红色”;
});
控制台日志(不带红色)您可以使用
splice()

for(var k=0;k
请参见下面的虚拟示例:

var-app=angular.module(“sa”,[]);
应用控制器(“FooController”,功能($scope){
var homeCtrl=这个;
homeCtrl.List=[{
名字:“耶罗”
}, {
姓名:“红色”
}, {
名称:“绿色”
}];
homeCtrl.ColorList=angular.copy(homeCtrl.List);
homeCtrl.remove=函数(){
对于(var k=0;k

{{fooCtrl.ColorList}



看起来您在这里遇到了问题,因为您正在修改正在迭代的列表。Javascript不喜欢这样。尝试创建一个新列表,然后替换旧列表

var myNewList = [];
for (var k = 0; k < homeCtrl.List.length; k++) {
                    if (homeCtrl.List[k].name === 'Red') {
                        myNewList.push(homeCtrl.List[k]);
                    }
// now myNewList only contains the 'Red' elements.
var myNewList=[];
对于(var k=0;k
developer033的使用建议。过滤器比保持循环更优雅。谢谢Shashank,这工作得很好。很高兴这起作用!!欢迎接受答案谢谢你的建议,这很好,但在我的情况下,拼接是一个更好的选择。请在提问之前尝试搜索
var myNewList = [];
for (var k = 0; k < homeCtrl.List.length; k++) {
                    if (homeCtrl.List[k].name === 'Red') {
                        myNewList.push(homeCtrl.List[k]);
                    }
// now myNewList only contains the 'Red' elements.