[英]Dynamically create new element in array and update IDs of all following elements
我正在研究基於時間軸的日記/日記,其中有代表各個條目的JS對象數組。 每個對象都有一個基於其在數組中位置的ID。 問題是我希望能夠將一個條目插入到數組中的特定位置,然后更新所有條目的ID以匹配它們在數組中的新位置。 圖1
圖1:數組中有兩個ID為0和1的條目。我單擊第二個條目(id 1)中的按鈕,在此條目之前添加新條目。 新條目將具有“ id = 1”,並且所有以下所有條目都需要將其ID更新為“ id + = 1”,因此不會有重復的ID。
現在這是我的問題。 創建新條目之后(或之前),我似乎無法更新ID。 這是我的代碼:
創建新的Day對象並將其添加到數組
//currentID = ID of the entry I'm creating the new one from
//new Day(id, name, date, desc);
//daysArray is the array containing entry objects
var dayToCreate = new Day(currentID,
$newDayName.val(),
$newDayDate.val(),
$newDayDescription.val());
daysArray.splice(currentID, 0, dayToCreate); //
更新以下所有數組元素的ID以匹配其新數組位置
var ii = daysArray.length - 1;
for (; ii > currentID; ii--) {
daysArray[ii].id = ii;
$( ".day#" + ii - 1 ).attr("id", ii); //Change ID of the DOM element
}
為新條目創建DOM
drawDay(currentID).insertBefore( $( ".day#" + currentID ) );
drawDay函數
function drawDay(dayId) {
var $drawDiv = $( "<div class='day' id='" + daysArray[dayId].id + "'></div>" );
//Return DOM for the day
return $drawDiv;
}
var ii = daysArray.length - 1;
for (; ii > currentID; ii--) {
daysArray[ii].id = ii;
$( ".day#" + ii - 1 ).attr("id", ii); //Change ID of the DOM element
}
去
var daysArrayLength = daysArray.length,
i = 0;
for (;i < daysArrayLength; i++ ) {
daysArray[i].id = i + 1;
}
array.splice(start,deleteCount [,item1 [,item2 [,...]]])正在更改數組中的索引,因此您可以只使用索引作為ID嗎?
另一種方法是在一年中的每一天使用一組365個項目。 但是,這將效率更低。
或者讓ID按條目計數,但在此處使用日期:id ='“ + daysArray [dayId] .id +”'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.