问题
我正在从JavaScript函数中推送值并使用对象填充数组。 我想要发生的是删除零的值+值。
返回数组的示例
[Object percent: 516 unit: -10.689124404913258
Object percent: 516 unit: -9.011227255423254
Object percent: 561 unit: -12.669770888525518
Object percent: 6516 unit: -15.99180968320506
Object percent: 0 unit: 0]
JavaScript
my_arr = []
for(var i = my_arr.length - 1; i >= 0; i--) {
if(array[i] === 0) {
array.splice(i, 1);
}
return my_arr;
}
答案 0 :(得分:3)
如果您想从数组中删除具有价格和单位的项目,可以使用此项。
var items = [
{ percent: 516, unit: -10.689124404913258 },
{ percent: 516, unit: -9.011227255423254 },
{ percent: 561, unit: -12.669770888525518 },
{ percent: 6516, unit: -15.99180968320506 },
{ percent: 0, unit: 0 }
];
items = items.filter(i => i.percent && i.unit);
console.log(items);
BTW 你的主要问题是你在循环内部返回,这将在第一个回合中停止循环。
我甚至不相信你的代码有效甚至一段时间,因为在函数范围外使用return
我有点错误:
Uncaught SyntaxError:非法返回语句
答案 1 :(得分:2)
试试:
my_arr.filter(function(element){
return element.percent && element.unit;
});
如果percent
和unit
属性等于0
,则会产生错误结果,并会从结果中滤除。
答案 2 :(得分:2)
假设您的源数组看起来像这样......
var sourceArray = [
{ percent: 123, unit: -1 },
{ percent: 456, unit: -2 },
{ percent: 0, unit: 0 },
{ percent: 789, unit: -3 }
];
....然后你可以使用Array.prototype.filter
函数获得一个过滤的数组:
var filteredArray = sourceArray.filter(function(item) {
return item.percent || item.unit;
})
// => [
// { percent: 123, unit: -1 },
// { percent: 456, unit: -2 },
// { percent: 789, unit: -3 }
//];
请注意,这是在删除项目之前检查percent
和 unit
是否为零。如果您只需要检查其中一个值,则可以修改过滤器功能(例如return item.percent
如果您只想检查percent
)
答案 3 :(得分:1)
您可以使用过滤器:
var filtered_array = my_arr.filter(function(el) { return el.percent > 0; });
当然你可以包含你喜欢的任何其他条件 - 过滤后的数组包含回调函数返回true的所有元素。