Получить новый объект, добавленный в массив в JavaScript после componentDidUpdate - PullRequest
0 голосов
/ 15 апреля 2019

Как я могу получить новый объект, добавленный в массив после componentDidUpdate?

У меня есть эти два объекта в prevProps:

objArray1 = [
    {
        "id": 1,
        "name": "abc",
    },
    {
        "id": 2,
        "name": "def",
    }
]

, и я получаю эти три объекта в this.props

objArray2 = [
    {
        "id": 1,
        "name": "abc",
    },
    {
        "id": 2,
        "name": "def",
    },
    {
        "id": 3,
        "name": "ghi",
    }
]

и я хочу добраться до объекта, который изменился

newObject ={
            "id": 3,
            "name": "ghi",
        }

, чтобы я мог передать его другой функции

Ответы [ 3 ]

4 голосов
/ 15 апреля 2019

Создайте набор значений id из prevProps с Array.map() и отфильтруйте новый props с id, который существует в наборе:

const prevProps = [{"id":1,"name":"abc"},{"id":2,"name":"def"}]
const props = [{"id":1,"name":"abc"},{"id":2,"name":"def"},{"id":3,"name":"ghi"}]

const prevSet = new Set(prevProps.map(o => o.id))

const added = props.filter(o => !prevSet.has(o.id))

console.log(added)

Если новые элементы всегда добавляются в конец массива , вы можете использовать Array.slice() для удаления предыдущих элементов (длина `prevProps) и получите новые предметы:

const prevProps = [{"id":1,"name":"abc"},{"id":2,"name":"def"}]
const props = [{"id":1,"name":"abc"},{"id":2,"name":"def"},{"id":3,"name":"ghi"}]

const added = props.slice(prevProps.length)

console.log(added)
1 голос
/ 15 апреля 2019

Вы можете фильтровать objArray2 с идентификатором

 objArray2.filter(ele=> !objArray1.some(value=> value.id === ele.id) )

Если после предыдущего объекта всегда добавляются дополнительные элементы, вы можете нарезать

   objArray2.slice(objArray1.length,)
0 голосов
/ 15 апреля 2019

, если идентификаторы увеличиваются на единицу каждый раз, когда они добавляются. Затем вы можете сохранить последний идентификатор и проверить наличие новых при обновлении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...