mar*_*ork 3 javascript arrays object
我有一系列对象。这些对象有一个属性 id。我需要一个返回下一个可用 id 的函数(对象未使用该 id)。
array = [{ id: 1 }, { id: 2 }, { id: 5 }, { id: 3 }];
Run Code Online (Sandbox Code Playgroud)
我想要一个函数,它接受一个数组作为输入并返回一个数字(这是下一个空闲 ID)。
在示例情况中:
findFreeId(array) {
*magic happens*
}
// result = 4
Run Code Online (Sandbox Code Playgroud)
像这样的事情怎么样?
function findFreeId (array) {
const sortedArray = array
.slice() // Make a copy of the array.
.sort(function (a, b) {return a.id - b.id}); // Sort it.
let previousId = -1;
for (let element of sortedArray) {
if (element.id != (previousId + 1)) {
// Found a gap.
return previousId + 1;
}
previousId = element.id;
}
// Found no gaps.
return previousId + 1;
}
// Tests.
let withGap = [{id: 1}, {id: 2}, {id: 5}, {id: 3}];
let noGap = [{id: 1}, {id: 2}];
let empty = [];
console.log(findFreeId(withGap)); // 4
console.log(findFreeId(noGap)); // 3
console.log(findFreeId(empty)); // 1Run Code Online (Sandbox Code Playgroud)