根据动态名称属性的值对JSON进行排序
Sorting a JSON by value of a dynamic name property
我一直在尝试做一个在线编码练习,练习看起来像这样:
json数组A包含一个key和一个A的随机数对象双重价值。数组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中表示,所以它的值为0。例:B = ["a+ B "," B +d+f","k+z"]
你的任务是组合数组B和A,提供一个数组C包含b的和运算的结果必须按降序排序。结合上面的例子,由此产生的数组是:例: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)})
相关文章:
- 将两个Json提要合并为一个,并按时间排序
- 在不同的javascript数组中对json响应进行排序
- 如何从网页中对具有多个不同参数的JSON进行排序
- 对包含对象的JSON对象进行排序
- Sencha Ext JS排序标准以字符串而不是JSON的形式发送
- 排序和操作json对象,javascript
- 将 json 数组的一部分分别排序到同一数组的其他部分
- 如何在节点中进行 Json 对象排序.js
- 存储多个Json对象,然后对其进行排序
- 对JSON数组对象进行排序
- 使用javascript/JQM对JSON对象进行排序并附加到html中
- 使用jquery对JSON进行排序
- 如何在JavaScript中使用主节点文本对json对象进行排序
- JSON,按播放的会话总数排序,输出前3名
- 如何迭代无序的JSON数据并排序为数组
- 从JSON对列表进行自定义排序
- 如何根据不同排序顺序的多个值对json对象进行排序
- 跳过 Angular JS 中的 ng-repeat JSON 排序
- 嵌套对象JSON排序JavaScript
- Json排序问题