Хм, похоже, проблема была не в том, что я думал; моя ошибка заключалась в следующих строках, которые вообще не имели никакого отношения к массивам:
sms.original = eval('(' + data + ')');
sms.messages = sms.original;
sms.original становится объектом, а затем sms.messages становится sms.original (я просто хотел, чтобы они имели одинаковое значение). Объекты содержат массив с именем items , который должен оставаться статическим в объекте sms.original , но когда я изменил sms.messages , исходный объект изменился как Что ж. Решение было простым:
sms.original = eval('(' + data + ')');
sms.messages = eval('(' + data + ')');
Извините, что беспокою вас, я должен был разработать, но код разделен на несколько файлов и функций. В любом случае, ребята, спасибо, теперь техника сплайсинга Guffa работает на меня.