我的问题很快。这是问题所在:
//Gets string from database in "User1|User2|User3" format
var frArray = res[0].friendRequests.split('|');
//frArray should now equal ['User1', 'User2', etc]
//data.friend is a string for the friend we are removing from requests
//let's assume it's User1
console.log(frArray.indexOf(data.friend)); //This prints 0
console.log(frArray); //This prints User1 which is correct
frArray = frArray.splice(frArray.indexOf(data.friend), 1);
console.log(frArray);
//This prints User1 STILL which is not correct it should've removed it
我将不胜感激,将不胜感激。我已经坚持了一段时间。谢谢
答案 0 :(得分:2)
splice
返回删除的元素的数组。只需删除分配,以便您的变量继续引用原始数组,该数组将在适当位置进行修改:
frArray.splice(frArray.indexOf(data.friend), 1);
示例:
const frArray = ["Jane", "Mohammed", "An"];
const removed = frArray.splice(0, 1);
console.log(`removed: ${JSON.stringify(removed)}`);
console.log(`frArray: ${JSON.stringify(frArray)}`);
答案 1 :(得分:0)
根据Array.splice
的文档:
splice()方法通过删除或更改数组的内容 替换现有元素和/或添加新元素。
包含删除的元素的数组。如果只有一个元素是 移除后,将返回一个元素的数组。如果没有元素 删除后,将返回一个空数组。
因此,splice
变异 原始数组并返回removed elements
。
在您的代码中,您拥有:frArray = frArray.splice(frArray.indexOf(data.friend), 1);
要在{strong>将{1}}的结果分配给您的splice
的地方,而不只是执行frArray
,然后继续使用原始的(现在是变异数组) ):
splice