我正在使用角度js和离子框架。问题是我需要从来自API的jsondata中删除一个元素。
Json数据:
[["abcd@gmail.com","joe"],["xyz@gmail.com","brain"],["hhh@gmail.com","bob"]];
我需要删除第二个元素" xyz@gmail.com"并且只展示剩余的元素
[["abcd@gmail.com","joe"],["hhh@gmail.com","bob"]];
控制器条件:
if(response.RETURN == "TRUE") {
var listObject = JSON.parse(response.LIST);
$scope.ulist = listObject;
//HERE I NEED TO FILTER THAT PARTICULAR ELEMENT
}
提前致谢
答案 0 :(得分:2)
只需一个for
循环即可,对吗?
$scope.ulist = [];
for (var i = 0, len = listObject.length; i < len; i++ ) {
if(listObject[i][0] != "xyz@gmail.com") {
$scope.ulist.push(listObject[i]);
}
}
或者,使用Array.filter
:
$scope.ulist = listObject.filter(function (email) {
return email[0] !== "xyz@gmail.com";
});
答案 1 :(得分:2)
最简单的解决方案是使用Javascript的拼接方法。
if(response.RETURN == "TRUE") {
var listObject = JSON.parse(response.LIST);
listObject.splice(1,1);
$scope.ulist = listObject.;
//HERE I NEED TO FILTER THAT PARTICULAR ELEMENT
}
答案 2 :(得分:0)
处理此问题的最简单方法是使用lodash库,它将节省您的时间并使您的代码可读。
_.pullAt(array, [indexes])
从与给定索引对应的数组中移除元素,并返回已删除元素的数组。索引可以指定为索引数组或单个参数。
var array = [5, 10, 15, 20];
var evens = _.pullAt(array, 1, 3);
console.log(array);
// → [5, 15]
console.log(evens);
// → [10, 20]
,在你的情况下:
var listOfFilteresObjects = _.pullAt(listOfObjects,2);
那就是兄弟,
干杯
答案 3 :(得分:0)
var testArr = [["abcd@gmail.com", "joe"],
["xyz@gmail.com", "brain"],
["hhh@gmail.com", "bob"]];
var customFilter = function(arr, filterStr) {
var result = [];
angular.forEach(arr, function (a1) {
var tmp = a1;
var idx = 0;
angular.forEach(tmp, function (a2) {
if ((a2 !== filterStr)
&& (idx === 0)) {
result.push(tmp);
}
idx++;
});
});
return result;
}
var filteredTestArr = customFilter(testArr, "xyz@gmail.com");