我一直在尝试做在线编码练习,练习看起来像这样:
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的求和运算结果的数组C。结果数组必须按降序排序。结合以上示例,所得数组将为: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)})
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句