IT

lodash를 사용하여 목록에서 요소를 제거하는 방법은 무엇입니까?

lottoking 2020. 6. 13. 09:37
반응형

lodash를 사용하여 목록에서 요소를 제거하는 방법은 무엇입니까?


다음과 같은 객체가 있습니다.

var obj = {
    "objectiveDetailId": 285,
    "objectiveId": 29,
    "number": 1,
    "text": "x",
    "subTopics": [{
        "subTopicId": 1,
        "number": 1
    }, {
        "subTopicId": 2,
        "number": 32
    }, {
        "subTopicId": 3,
        "number": 22
    }]
}
var stToDelete = 2;

나는 한 lodash다른 것들에 대한 내 응용 프로그램에 설치되어 있어야합니다. 사용할 수있는 효율적인 방법이 있나요 lodash: 항목 삭제 {"subTopicId":2, "number":32}로부터 obj객체는?

아니면 이것을 수행하는 자바 스크립트 방법이 있습니까?


의견에서 lyyons가 지적 했듯이이 작업을 수행하는 관용적이고 독창적 인 방법은 다음 _.remove과 같이 사용하는 것입니다.

_.remove(obj.subTopics, {
    subTopicId: stToDelete
});

그 외에도 현재 요소를 제거해야하는지 여부를 결정하는 데 사용되는 술어 함수를 전달할 수 있습니다.

_.remove(obj.subTopics, function(currentObject) {
    return currentObject.subTopicId === stToDelete;
});

또는 이전 배열을 필터링하여 새 배열을 만들고 _.filter동일한 객체에 다음과 같이 할당 할 수 있습니다

obj.subTopics = _.filter(obj.subTopics, function(currentObject) {
    return currentObject.subTopicId === stToDelete;
});

또는

obj.subTopics = _.filter(obj.subTopics, {subTopicId: stToDelete});

바닐라 JS 만 사용하십시오. splice요소를 제거하는 데 사용할 수 있습니다 .

obj.subTopics.splice(1, 1);

데모


당신은 그것을 할 수 있습니다 _pull.

_.pull(obj["subTopics"] , {"subTopicId":2, "number":32});

참조를 확인하십시오


이제 _.reject 를 사용하면 보관해야 할 내용 대신 제거해야 할 대상을 기준으로 필터링 할 수 있습니다.

달리 _.pull거나 _.remove, 배열에 만 작업이 ._reject어떤 작업을한다Collection

obj.subTopics = _.reject(obj.subTopics, (o) => {
  return o.number >= 32;
});

@thefourtheye 답변 외에도 전통적인 익명 함수 대신 술어사용하십시오 .

  _.remove(obj.subTopics, (currentObject) => {
        return currentObject.subTopicId === stToDelete;
    });

또는

obj.subTopics = _.filter(obj.subTopics, (currentObject) => {
    return currentObject.subTopicId === stToDelete;
});

lodash와 typescript

const clearSubTopics = _.filter(obj.subTopics, topic => (!_.isEqual(topic.subTopicId, 2)));
console.log(clearSubTopics);

다음은 배열이있는 간단한 lodash 함수이며 색인 번호로 삭제하는 것입니다.

index_tobe_delete = 1

fruit = [{a: "apple"}, {b: "banana"}, {c: "choco"}]
_.filter(fruit, (value, key)=> {
return (key !== index_tobe_delete)
})

참고 URL : https://stackoverflow.com/questions/21281286/how-can-i-remove-an-element-from-a-list-with-lodash

반응형