/**
* @msg: 交换数组两个临近元素位置
* @return {*} 交换位置的新数组
* @param {Array} data 要交换元素的数组
* @param {Number} index 交换的元素索引
* @param {String} type up 或 down 与上一元素交换 或 与下一元素交换
* @param {String,Array} key 如果是对象数组可以选则同时交换对象内部value 提供一个key 字符串 或者 key 字符串数组
*/
export function moveArrayEl(data, index, type, key) {
if (type === 'up' && index === 0) return data
if (type === 'down' && index === data.length - 1) return data
const res = _.cloneDeep(data)
let reIndex = 0
type === 'up' ? (reIndex = index - 1) : type === 'down' ? (reIndex = index + 1) : reIndex
[res[index], res[reIndex]] = [res[reIndex], res[index]]
if (_.isString(key)) {
if (res[index][key] && res[reIndex][key]) {
[res[index][key], res[reIndex][key]] = [res[reIndex][key], res[index][key]]
} else {
console.log(`${key} not in an array of object`)
}
} else if (_.isArray(key)) {
for (let i = 0
if (res[index][key[i]] && res[reIndex][key[i]]) {
[res[index][key[i]], res[reIndex][key[i]]] = [res[reIndex][key[i]], res[index][key[i]]]
} else {
console.log(`${key} not in an array of object`)
}
}
}
return res
}