Ux.elementAdd
去重版本的数组添加
源代码:
// Ux.Type.js
const elementAdd = (array = [], element) => {
if (element) {
if ("object" === typeof element) {
const filter = array.filter(item => element.key === item.key);
if (0 === filter.length) {
array.push(element);
}
} else if ("string" === typeof element || "number" === typeof element) {
const $elements = Immutable.fromJS(array);
if (!$elements.contains(element)) {
array.push(element);
}
}
}
};
规则:
- array为一个JavaScript中的数组Array;
- element不为undefined时才会执行追加;
- 如果追加的是Object,则检查key字段是否存在,不存在则追加;
- 如果追加的是string或number,则直接检查值是否存在再追加;
示例:
const fnCalcRoomNumber = (reference: any = {}) => {
const $data = reference.props.data ? reference.props.data : {};
const roomNumbers = [];
if ($data && $data.travelers) {
$data.travelers.forEach(traveler => Ux.elementAdd(roomNumbers, traveler.roomNumber));
}
return roomNumbers;
};