簡體   English   中英

按動態名稱屬性的值對JSON排序

[英]Sorting a JSON by value of a dynamic name property

我一直在嘗試做在線編碼練習,練習看起來像這樣:

json數組A具有一個隨機數對象,該對象包含一個鍵和一個double值。 數組A最多可以包含10000個對象。 例如:A = [{{a“:2.0},{” a“:2.7},{” c“:2.0},{” b“:5.1},{” d“:2.9},{” c“: 2.0},{“ f”:2.2},{“ h”:2.1}]

另一個數組B具有一組由鍵執行的和運算的隨機集合。 這些密鑰的值可以在A中找到。如果密鑰未在A中顯示,則其值為零。 例如:B = [“ a + b”,“ b + d + f”,“ k + z”]

您的工作是將數組B和A組合在一起,提供一個數組C,其中包含B的求和運算的結果。結果數組必須以降序排列。 結合以上示例,所得數組將為:Ex:C = [{“ b + d + f”:10.2},{“ a + b”:9.8},{“ k + z”:0}]

代碼看起來像這樣(請讓我知道是否有更好的實現,而較小的O())

 var a = [{"a": 2.0},{"a": 2.7},{"c": 2.0},{"b": 5.1},{"d": 2.9},{"c": 2.0},{"f": 2.2},{"h": 2.1}] var b = ["a+b","b+d+f","k+z"]; var c = []; function sumArrays(){ for (var sum in b){ var keysToSum = b[sum].split("+"); var sumatory = 0; for(var key in keysToSum){ for(var number in a){ if(a[number].hasOwnProperty(keysToSum[key])){ sumatory += a[number][keysToSum[key]]; } } } c.push(JSON.parse("{\\"" + b[sum] + "\\":" + sumatory + "}")); } //c.sort(function(a,b){ // return a.value - b.value; //}); } 

我無法對數組C進行排序,因為屬性名稱發生了變化。 有任何想法嗎?

謝謝 !

首先,您需要對象的第一個值:

function firstValue(obj){
   for(var prop in obj){
      return obj[prop];
   }
}

然后用它來排序

a.sort(function(a,b){ return firstValue(a)-firstValue(b)})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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