按名称交换javascript对象索引

时间:2017-09-07 12:02:23

标签: javascript object swap

我的javascript对象看起来像下面的示例,我想知道如何编写交换函数来更改对象中的元素位置。例如,我想将位置1到2和2的两个元素交换为1。

{
  element_name_1 : {
    //.. data
  }
  element_name_2 : {
    //.. data
  }
  element_name_3 : {
    //.. data
  }
  element_name_4 : {
    //.. data
  }
}

现在我想将element_name_2与element_name_1交换。

2 个答案:

答案 0 :(得分:1)

正如Miles指出的那样,您的代码可能已损坏并应使用数组。我不会使用它,也不会测试,但可能

var data = {
  element_name_1: {},
  element_name_2: {},
  element_name_3: {},
  element_name_4: {}
}

console.log(data);

var swap = function(object, key1, key2) {
  // Get index of the properties
  var pos1 = Object.keys(object).findIndex(x => {
    return x === key1
  });
  var pos2 = Object.keys(object).findIndex(x => {
    return x === key2
  });

  // Create new object linearly with the properties swapped
  var newObject = {};
  Object.keys(data).forEach((key, idx) => {
    if (idx === pos1)
      newObject[key2] = object[key2];
    else if (idx === pos2)
      newObject[key1] = object[key1];
    else
      newObject[key] = object[key];
  });
  return newObject;
}

console.log(swap(data, "element_name_1", "element_name_2"));

答案 1 :(得分:0)

看一下代码,可以解决这个问题

function swapFunction(source, destination) {
    var tempValu,
        sourceIndex;
    for ( i = 0; i < Arry.length; i++) {
        for (var key in Arry[i]) {
            Ti.API.info('key : ' + key);
            if (source == key) {
                tempValu = Arry[i];
                sourceIndex = i;
            }
            if (destination == key) {
                Arry[sourceIndex] = Arry[i];
                Arry[i] = tempValu;
                return Arry;
            }           
        }
    }
}

JSON.stringify(swapFunction("key_1", "key_3"));  // [{"key_3":"value_3"},{"key_2":"value_2"},{"key_1":"value_1"},{"key_4":"value_4"},{"key_5":"value_5"}]

让我知道这是否有效。

好运&amp;干杯

Ashish Sebastian