Глядя на ваше утверждение
Я также держу данные в другом массиве, но не работает, это влияет на исходный массив.
Да, потому что если мыиспользуйте =
для присвоения массива другой переменной, он все равно будет сохранен как ссылка.
Решение состоит в том, чтобы скопировать каждый элемент.Если ваши элементы в массиве являются простым базовым объектом (без вложенного поля), достаточно использовать object.assign
или синтаксис распространения.
this.filterDataList = [...this.noticeBoardList]; // not robust if item is updated
// or
this.filterDataList = this.noticeBoardList.map(item => ({...item});
// or
this.filterDataList = this.noticeBoardList.map(item => Object.assign({}, item)); // if spread syntax is not supported
Однако, если элемент находится в массиве сложного объекта json, я все же предпочитаю использовать lodash cloneDeep
.Пожалуйста, используйте его с умом, так как это может повлиять на память, если это большой массив.
import * as _ from 'lodash';
this.filterDataList = _.cloneDeep(this.noticeBoardList);
Надеюсь, это поможет