【发布时间】:2020-07-30 11:34:04
【问题描述】:
我的 Angular 应用程序中有一个项目数组(对象的有序数组)。这些项目正在更新,新值来自服务(无序)。我需要编写一个算法来更新现有数组。我以前只是用新数组替换旧数组,但这弄乱了项目的顺序。我有以下边缘情况,其中oldArr 是我的旧项目数组,newArr 是来自服务的数组,output,oldArray 应该是什么样子:
const oldArr = [{id: 1, invalid: true}];
const newArr = [{id: 1, invalid: false}];
Output: [{id: 1, invalid: false}]
const oldArr = [{id: 1, invalid: true}];
const newArr = [{id: 1, invalid: true}, {id: 2, invalid: true}];
Output: [{id: 1, invalid: true}, {id: 2, invalid: true}]
const oldArr = [{id: 1, invalid: true}, {id: 2, invalid: true}];
const newArr = [{id: 1, invalid: true}];
Output: [{id: 1, invalid: true}]
const oldArr = [{id: 1, invalid: true}, {id: 2, invalid: true}];
const newArr = [{id: 2, invalid: true}, {id: 1, invalid: true}];
Output: [{id: 1, invalid: true}, {id: 2, invalid: true}]
const oldArr = undefined
const newArr = [{id: 1, invalid: true}, {id: 2, invalid: true}];
Output: [{id: 1, invalid: true}, {id: 2, invalid: true}]
const oldArr = [{id: 1, invalid: true}];
const newArr = undefined;
Output: undefined
const oldArr = [{id: 65, invalid: true}, {id: 2, invalid: true}];
const newArr = [{id: 2, invalid: true}, {id: 65, invalid: true}];
Output: [{id: 65, invalid: true}, {id: 2, invalid: true}]
这类东西我一般用lodash,但也可以是普通的JS。
【问题讨论】:
-
oldArr有什么用?并非所有newArr -
你保持订单的属性是什么?
-
订单由
dragula插件处理。
标签: javascript arrays lodash