Javascript findIndex不是一个函数
我有一个json数组:Javascript findIndex不是一个函数,javascript,Javascript,我有一个json数组: [ {"id":19,"name":"Jed", "lastname":"DIAZ", "hobby":"photo", "birthday":"2011/11/22"}, {"id":20,"name":"Judith", "lastname":"HENDERSON", "hobby":"pets", "birthday":"1974/06/12"}, {"id":21,"name":"Nicolai", "lastname":"GRAHAM", "
[
{"id":19,"name":"Jed", "lastname":"DIAZ", "hobby":"photo", "birthday":"2011/11/22"},
{"id":20,"name":"Judith", "lastname":"HENDERSON", "hobby":"pets", "birthday":"1974/06/12"},
{"id":21,"name":"Nicolai", "lastname":"GRAHAM", "hobby":"reading", "birthday":"2005/01/22"},
{"id":22,"name":"Vasile", "lastname":"BRYANT", "hobby":"singing", "birthday":"1987/03/17"}
]
函数从json数组中删除项
removeItem: function(removeId){
//paramater validation
return dataLoad.then(function(data){
f = data.findIndex(function(item) { return item.id == removeId; });
if(f < 0)
return false;
data.splice(f,1);
LS.setData(data,"cutomers");
return true;
});
}
我想你会在自己的标题中找到答案;您可能在寻找indexOf,而不是findIndex。findIndex是ECMAScript 2015的一部分,目前尚未得到广泛支持 据介绍,findIndex仅在Firefox25+和Safari 7.1+中受支持,因此,如果您在任何其他浏览器中进行测试,您都会遇到错误
如果您现在想使用findIndex,MDN页面上有一个建议的polyfill,您可以使用。
findIndex
不是数组的原型方法,在中,您可能需要将过滤器
与索引结合使用,相反,它的优点是一找到条目就停止搜索
var f;
var filteredElements = data.filter(function(item, index) { f = index; return item.id == removeId; });
if (!filteredElements.length) {
return false;
}
data.splice(f, 1);
按照评论中的建议进行编辑:
此解决方案正在使用
发现于
您可以像IE一样使用Polyfill而不支持Array.prototype.findIndex()
我已经测试过了,它对我有效
它有一个多边形填充
希望这有帮助 也许您应该更新问题的标题,因为问题正文没有提到indexof
。您是否在该行之前执行了console.log(data)
?更具体地说,您能否确认数据
是一个数组
?您能否共享整个代码?没有足够的信息。Joachim Pileborg,thnx的标题:)。没有我的晚餐控制台。日志(数据)。我建议使用Array.prototype.some
,而不是filter,因为如果找到匹配项,它会停止迭代。同意,根据您的回答更新我的答案会给人一种印象,即filter
在找到匹配项时会停止迭代。这是不正确的-但是对于一些来说是正确的。“MDN页面上有一个建议的polyfill,如果您今天想使用findIndex,您可以使用它。”这很有帮助!谢谢不幸的是,polyfill以字符串形式返回索引(至少在IE 11中是这样)
var f;
var filteredElements = data.filter(function(item, index) { f = index; return item.id == removeId; });
if (!filteredElements.length) {
return false;
}
data.splice(f, 1);
var f;
var found = data.some(function(item, index) { f = index; return item.id == removeId; });
if (!found) {
return false;
}
data.splice(f, 1);