Я объявил массив как var user_profile = [];, и у меня уже есть некоторые отправленные данные в arrayList, которые содержат:
[
{
"assessmentType":"PRE",
"assessCatId":0,
"assessReason":"appeal",
"assessAmount":"445",
"assessPenalty":"",
"assessTotal":445
},
{
"assessmentType":"PRE",
"assessCatId":0,
"assessReason":"appeal",
"assessTotal":null
},
{
"assessmentType":"PRE",
"assessCatId":0,
"assessReason":"445",
"assessTotal":null
},
{
"assessmentType":"PRE",
"assessCatId":0,
"assessReason":"",
"assessTotal":null
},
{
"assessmentType":"PRE",
"assessCatId":0,
"assessReason":"2075-09-13",
"assessAmount":"2075-09-03",
"assessTotal":null
},
{
"assessmentType":"PRE",
"assessCatId":0,
"assessReason":"2075-09-13",
"assessTotal":null
},
{
"assessmentType":"PRE",
"assessCatId":0,
"assessReason":"2075-09-03",
"assessTotal":null
},
{
"assessmentType":"PRE",
"assessCatId":1,
"assessReason":"A",
"assessAmount":"1",
"assessPenalty":"2",
"assessTotal":3
},
{
"assessmentType":"PRE",
"assessCatId":2,
"assessReason":"B",
"assessAmount":"3",
"assessPenalty":"40",
"assessTotal":43
},
{
"assessmentType":"PRE",
"assessCatId":3,
"assessReason":"C",
"assessAmount":"5",
"assessPenalty":"6",
"assessTotal":11
}
]
В этом списке массивов мне нужно удалить данные, у которых AssessmentCatId == 0. Итак, я попытался сращивать, используя
$.each(user_profile, function(i) {
if (user_profile[i].assessCatId == 0) {
user_profile.splice(i, 1);
}
});
Но это не работает. Он показывает мне ошибку как:
Или я хочу сказать, что мне просто нужны данные в arrayList, чей assessCatId==1 or 2 or 3. Как отфильтровать этот arrayList и удалить эти данные из arrayList?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Не пытайтесь изменить (например, splice) массив пока, который вы повторяете по нему - это приведет к очень неинтуитивному поведению. Например, после того, как первый элемент будет удален, i дальнейших итераций будет ссылаться на индекс, по которому должен находиться элемент, проходящий по использовал, а не на индекс, по которому этот элемент находится в новом мутированном массиве, что приводит к проблемам undefined ближе к концу. , а в неверных указателях удаляются.
Здесь лучше подойдет простой .filter, без jQuery:
const input=[{"assessmentType":"PRE","assessCatId":0,"assessReason":"appeal","assessAmount":"445","assessPenalty":"","assessTotal":445},{"assessmentType":"PRE","assessCatId":0,"assessReason":"appeal","assessTotal":null},{"assessmentType":"PRE","assessCatId":0,"assessReason":"445","assessTotal":null},{"assessmentType":"PRE","assessCatId":0,"assessReason":"","assessTotal":null},{"assessmentType":"PRE","assessCatId":0,"assessReason":"2075-09-13","assessAmount":"2075-09-03","assessTotal":null},{"assessmentType":"PRE","assessCatId":0,"assessReason":"2075-09-13","assessTotal":null},{"assessmentType":"PRE","assessCatId":0,"assessReason":"2075-09-03","assessTotal":null},{"assessmentType":"PRE","assessCatId":1,"assessReason":"A","assessAmount":"1","assessPenalty":"2","assessTotal":3},{"assessmentType":"PRE","assessCatId":2,"assessReason":"B","assessAmount":"3","assessPenalty":"40","assessTotal":43},{"assessmentType":"PRE","assessCatId":3,"assessReason":"C","assessAmount":"5","assessPenalty":"6","assessTotal":11}]
const output = input.filter(({ assessCatId }) => assessCatId != 0);
console.info(output);filter требует значительно меньше кода (меньше площади для ошибок) и гораздо более интуитивно понятен, чем splice в этой ситуации - это определенно предпочтительнее альтернативы.
@CertainPerformance, что, если мне нужно добавить условие, чтобы проверить как условие AssessmentcatId = 0, так и AssessmentReason == empty.
@ashwin Затем извлеките оба свойства: ({ assessCatId, assessReason }) => assessCatId != 0 || assessReason != 'empty') или что-то в этом роде
@CertainPerformance, как ты сказал мне, чтобы фильтровать AssessReason, не работает. Пожалуйста, помогите мне
Не на 100% понятно, что вы ищете, какой результат вы ожидаете? Обратите внимание, что в настоящее время у вас нет никаких свойств assessReason, которые являются 'empty' во входном массиве.
эй, ты должен взять индекс и склеить его