Javascript findIndex不是一个函数

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", "

我有一个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", "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);