[英]Move object element position in javascript
我正在嘗試找到一種方法來將對象元素移動到特定位置。
例如,我有這個對象:
{
"element1" : {} // object,
"element2" : {},
"element3" : {}
}
我搜索將element3移動到第一個位置:
{
"element3" : {},
"element1" : {},
"element2" : {}
}
謝謝你的幫助 !
JavaScript對象沒有排序。 您應該改為使用對象數組。
var arr = [
{ id: 'element1' },
{ id: 'element2' },
{ id: 'element3' }
]
然后,您可以將其重新排序,例如:
var first = arr.splice(0, 1);
arr.push(first);
也許您然后可以根據id來獲取特定元素:
var out = arr.filter(function (el) {
return el.id === 'element1';
});
JavaScript中的對象本質上是哈希映射。 它們的屬性本身沒有任何順序。 它們只是名稱值對。
您可能將對象與數組混淆,在這種情況下,排序確實很重要。
這是我執行該邏輯的代碼。 謝謝!
function _moveElementObject(object, from, to) {
var newObjects = [];
var newObject = {};
var oldObject = {};
var firstObject = {};
var lastObject = {};
var toMoveKey = "";
var toMoveValue;
oldObject = object;
var objLength = _countProperties(oldObject);
var keyNo = 1;
for (var key in oldObject) {
if (keyNo == from) {
toMoveKey = key;
toMoveValue = oldObject[key];
}
keyNo++;
}
console.log(oldObject);
keyNo = 1;
for (var key in oldObject) {
if (keyNo < to) {
firstObject[key] = oldObject[key];
newObject[key] = firstObject[key];
}
keyNo++;
}
console.log(firstObject);
keyNo = 1;
for (var key in oldObject) {
if (to <= objLength) {
lastObject[key] = oldObject[key];
}
keyNo++;
}
delete lastObject[toMoveKey];
newObject[toMoveKey] = toMoveValue;
for (var key in lastObject) {
newObject[key] = lastObject[key];
}
console.log(newObject);
console.log("push");
return newObject;
}
var sampleObj = {
"element1" : {} // object,
"element2" : {},
"element3" : {}
};
_moveElementObject(sampleObj,3,1);
// output object,
{
"element3" : {},
"element1" : {},
"element2" : {},
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.