devextreme
Version:
HTML5 JavaScript Component Suite for Responsive Web Development
113 lines (88 loc) • 2.78 kB
JavaScript
var isDefined = require("./type").isDefined,
each = require("./iterator").each,
objectUtils = require("./object");
var isEmpty = function isEmpty(entity) {
return Array.isArray(entity) && !entity.length;
};
var wrapToArray = function wrapToArray(entity) {
return Array.isArray(entity) ? entity : [entity];
};
var intersection = function intersection(a, b) {
if (!Array.isArray(a) || a.length === 0 || !Array.isArray(b) || b.length === 0) {
return [];
}
var result = [];
each(a, function (_, value) {
var index = inArray(value, b);
if (index !== -1) {
result.push(value);
}
});
return result;
};
var removeDuplicates = function removeDuplicates(from, what) {
if (!Array.isArray(from) || from.length === 0) {
return [];
}
if (!Array.isArray(what) || what.length === 0) {
return from.slice();
}
var result = [];
each(from, function (_, value) {
var index = inArray(value, what);
if (index === -1) {
result.push(value);
}
});
return result;
};
var normalizeIndexes = function normalizeIndexes(items, indexParameterName, currentItem, needIndexCallback) {
var indexedItems = {},
parameterIndex = 0;
each(items, function (index, item) {
index = item[indexParameterName];
if (isDefined(index)) {
indexedItems[index] = indexedItems[index] || [];
if (item === currentItem) {
indexedItems[index].unshift(item);
} else {
indexedItems[index].push(item);
}
delete item[indexParameterName];
}
});
objectUtils.orderEach(indexedItems, function (index, items) {
each(items, function () {
if (index >= 0) {
this[indexParameterName] = parameterIndex++;
}
});
});
each(items, function () {
if (!isDefined(this[indexParameterName]) && (!needIndexCallback || needIndexCallback(this))) {
this[indexParameterName] = parameterIndex++;
}
});
return parameterIndex;
};
var inArray = function inArray(value, object) {
if (!object) {
return -1;
}
var array = Array.isArray(object) ? object : object.toArray();
return array.indexOf(value);
};
var merge = function merge(array1, array2) {
for (var i = 0; i < array2.length; i++) {
array1[array1.length] = array2[i];
}
return array1;
};
exports.isEmpty = isEmpty;
exports.wrapToArray = wrapToArray;
exports.intersection = intersection;
exports.removeDuplicates = removeDuplicates;
exports.normalizeIndexes = normalizeIndexes;
exports.inArray = inArray;
exports.merge = merge;
;