如何在jquery / javascript中的键/值数组中的特定点插入键值对?

时间:2013-03-12 11:53:51

标签: javascript jquery

如果我有一个键值数组对象,希望有人可以在jquery中提供帮助

    var myArray= {};
    myArray['key1'] = 'value1';
    myArray['key2'] = 'value2';
    myArray['key3'] = 'value3';
    myArray['key5'] = 'value5';
    myArray['key6'] = 'value6';

如何在特定点插入另一个键值对? 例如     myArray ['key4'] ='value4'; 在key3和(或之前)key3之间(或之后)?

谢谢

6 个答案:

答案 0 :(得分:5)

ECMAscript Objects 中没有保证顺序,因此,无法在某一点插入新的键/值对。

改为使用数组

var arr = ['value1', 'value2', 'value3', 'value4', 'value5', 'value6'];

arr.splice(2, 0, 'new value');

console.log( arr ); // ['value1', 'value2', 'new value' 'value3', 'value4', 'value5', 'value6'];

答案 1 :(得分:2)

你拥有的是一个对象({}),而不是一个数组([])。对象中的键没有保证的顺序,因此您不能在特定点插入一个键;它们只是该物体的属性。

答案 2 :(得分:1)

感谢您的投入。我希望他们相当于拼接我错过的物品。显然不是这样,我使用了旧的地图并重建。

function objectInsertafterkey(object, newKey, newVal, insertAfterkey){
newObject={};
$.map(object, function(value, key) {    
if(key == insertAfterkey){
newObject[key] = value;
newObject[newKey] = newVal;
}
else
{
newObject[key] = value;
}
});
return newObject;
}

如果他们是更好的插入对象的方式,请随时告诉我。

答案 3 :(得分:0)

这样做,使用对象:

 var myArray = {key1: value1, key2: value2};

添加新内容:

myArray.key3 = "value3";

答案 4 :(得分:0)

这可能会对您有所帮助:

arr.splice将为现有数组添加新值

http://www.w3schools.com/jsref/jsref_splice.asp

答案 5 :(得分:-1)

正如jAndy所说,如果你想要一个特定的订单,请使用数组。

或者,如果键具有可排序的名称(如示例中所示),则可以在使用前对键进行排序。