[英]insert key=>value pair in PHP from a submitted Javascript object
[英]Insert key value pair at certain position in an object of javascript
我有一个由键值对组成的 javascript 对象,我想在某个位置插入一个键值对,在下面的示例中,我想将它插入到第一个键值对之后。
var obj = {key1: "value1", key2: "value2"};
console.log(obj);// {key1: "value1", key2: "value2"}
obj.key3 = "value3";
console.log(obj);// {key1: "value1", key2: "value2", key3: "value3"}
为了在某个索引后添加键值,我们可以使用Object.entries()
和Object.fromEntries()
。
let obj = {key1: "value1", key2: "value2"};
let keyValues = Object.entries(obj); //convert object to keyValues ["key1", "value1"] ["key2", "value2"]
keyValues.splice(1,0, ["newKey","newValue"]); // insert key value at the index you want like 1.
let newObj = Object.fromEntries(keyValues) // convert key values to obj {key1: "value1", newKey: "newValue", key2: "value2"}
在 ES6+ 环境中,非数字属性按插入顺序迭代,先delete
key2
,然后在设置key3
后重新添加:
var obj = {key1: "value1", key2: "value2"}; const { key2 } = obj; delete obj.key2; obj.key3 = "value3"; obj.key2 = key2; console.log(obj);
尽管如此,这是一件非常奇怪的事情,并且不能保证在 ES5 中工作。 您可以考虑改用数组。
JavaScript 中的对象属性没有定义的顺序。 不能保证您在对象字面量中定义它们的顺序将意味着其他任何地方。
您可以为此创建一个函数并在Object.keys
上使用reduce()
var data = {key1: "value1", key2: "value2"}; function insertKey(key,value,obj,pos){ return Object.keys(obj).reduce((ac,a,i) => { if(i === pos) ac[key] = value; ac[a] = obj[a]; return ac; },{}) } data = insertKey('key3','value3',data,1); console.log(data)
无法保证 Javascript 对象的顺序。 您只需添加新的键值,如obj.key3 = "value3";
并且key3
将在obj
上可用。
function insertKey(key,value,obj,pos){
return Object.keys(obj).reduce((ac,a,i) => {
if(i === pos) ac[key] = value;
ac[a] = obj[a];
return ac;
},{})
}
data = insertKey('key3','value3',data,1);
console.log(data)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.