簡體   English   中英

在javascript對象的某個位置插入鍵值對

[英]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)

對於 ES5

無法保證 Javascript 對象的順序。 您只需添加新的鍵值,如obj.key3 = "value3"; 並且key3將在obj上可用。

對於 ES6


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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM