2

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

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

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

谢谢

4

6 回答 6

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'];
于 2013-03-12T11:54:54.600 回答
2

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

于 2013-03-12T11:55:52.387 回答
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;
}

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

于 2013-03-12T13:40:47.317 回答
0

这样做,使用对象:

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

添新:

myArray.key3 = "value3";
于 2013-03-12T11:59:22.717 回答
0

这可能会帮助您:

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

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

于 2013-03-12T12:06:16.300 回答
-1

正如 jAndy 所说,如果您想要特定的顺序,请使用数组。

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

于 2013-03-12T11:57:14.143 回答