gpt4 book ai didi

javascript - 按字段名从数组中删除元素

转载 作者:数据小太阳 更新时间:2023-10-29 05:17:19 25 4
gpt4 key购买 nike

我有下一个数组:

0: {id: "10", tipo: "work"}
1: {id: "11", tipo: "work"}
2: {id: "24", tipo: "school"}
3: {id: "9", tipo: "work"}
4: {id: "25", tipo: "school"}

我想做的是从数组中删除一个元素,其中两个值匹配,例如,如果 id = 24tipo = school,则数组位于位置 2,必须删除,我有这个函数可以通过值找到数组键:

function eliminarElementoArray(array,val1,val2){   
for (var i=0; i<array.length; i++){
if (array[i].id == val1 && array[i].tipo == val2)
return i;
else
return false;
}
}

该函数无法正常工作,在某些情况下它返回 false,在其他情况下,它返回不正确的值。

最后这里是删除数组值的地方,但是它不起作用,因为前面的函数没有返回正确的值:

selected.splice( eliminarElementoArray(selected, id, tipo), 1);

如果有人能帮助我,我将不胜感激。

最佳答案

问题:

return false; for 循环中的语句: 该函数将始终检查array 然后如果它不匹配,它将移动到 else 子句并返回 false 而不循环遍历其余元素。

解决方案:

您应该将 return 语句移出循环,这样如果数组中没有元素与传递的参数匹配,函数将返回 false

注意:正如@Taplar 的评论所说,最好返回一个 Truthy(无 falsy)值,例如 -1,因为 splice() 方法会将 false 视为零 0 并删除第一项。

function eliminarElementoArray(array, val1, val2) {
for (var i = 0; i < array.length; i++) {
if (array[i].id == val1 && array[i].tipo == val2)
return i;
}

return -1;
}

var my_array = [{id: "10",tipo: "work"}, {id: "11",tipo: "work"}, {id: "24",tipo: "school"}, {id: "9",tipo: "work"}, {id: "25",tipo: "school"}];

console.log(eliminarElementoArray(my_array, "10", "work"));
console.log(eliminarElementoArray(my_array, "11", "fail test"));
console.log(eliminarElementoArray(my_array, "25", "school"));

关于javascript - 按字段名从数组中删除元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52410553/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com