如果我有一个键值数组对象,希望有人可以在jquery中提供帮助
var myArray= {};
myArray['key1'] = 'value1';
myArray['key2'] = 'value2';
myArray['key3'] = 'value3';
myArray['key5'] = 'value5';
myArray['key6'] = 'value6';
如何在特定点插入另一个键值对? 例如 myArray ['key4'] ='value4'; 在key3和(或之前)key3之间(或之后)?
谢谢
答案 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)
答案 5 :(得分:-1)
正如jAndy所说,如果你想要一个特定的订单,请使用数组。
或者,如果键具有可排序的名称(如示例中所示),则可以在使用前对键进行排序。