如何在不使用underscoreJS的情况下做到这一点?
问题描述:
我想知道如何使用JRE javascript而不是使用undercoreJS?我一直在尝试不同的方式,但我无法做到这一点! !:(谢谢如何在不使用underscoreJS的情况下做到这一点?
我想要做的是检查是选中或取消选中基本
myArray =[
{text: 'lean something', done: false},
{text: 'what ever', done: false }
];
function clearCompleted = function(){
myArray = _.filter(myArray, function(todo){
return !todo.done;
});
答
如果只支持现代浏览器(即什么比IE8更新),您可以只使用.filter()
:
myArray.filter(function(todo){
return !todo.done;
});
如果你想支持旧的浏览器,使用循环:
var temp = [];
for (var i = 0; i < myArray.length; i++) {
if (!myArray[i].done) {
temp.push(myArray[i]);
}
}
答
您可以使用Array.filter
:
myArray = myArray.filter(function(todo) {
return !todo.done;
});
如果您使用的旧浏览器不包含该方法d在上面的链接中有垫片。
+ 1垫片。它比循环更清洁。 – Blender 2013-02-25 09:27:15
Shim修改Array.prototype,如果使用for/in循环(对于数组中的item)循环,这在某些情况下可能会很危险。我建议为此创建自己的实用程序函数(将其称为myArrayFilter或任何在您的应用程序中有意义的函数),而不是修改Array对象本身。 – calvinf 2013-02-26 00:14:29