Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/473.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从特定数组中添加/求和所需的数组索引?_Javascript_Arrays_Ecmascript 6 - Fatal编程技术网

Javascript 如何从特定数组中添加/求和所需的数组索引?

Javascript 如何从特定数组中添加/求和所需的数组索引?,javascript,arrays,ecmascript-6,Javascript,Arrays,Ecmascript 6,我有以下数据结构,这些数据需要按照“104”中数组的前两个索引的总和进行排序 我怎样才能做到这一点?有人能帮忙吗 这是我迄今为止尝试过的,但没有达到预期效果 let orgs = Object.keys(data); let options = []; let selection = orgs.forEach((data, d) => { data["104"].forEach((val, i) => { options[i].data.push(va

我有以下数据结构,这些数据需要按照“104”中数组的前两个索引的总和进行排序

我怎样才能做到这一点?有人能帮忙吗

这是我迄今为止尝试过的,但没有达到预期效果

let orgs = Object.keys(data);
let options = [];
let selection = orgs.forEach((data, d) => {
  data["104"].forEach((val, i) => {
    options[i].data.push(val);
  })
});

首先,我们需要将数据转换成数组进行排序

然后定义我们自己的
compare
函数作为我们的需求

最后,对数组进行排序

运行代码段以检查结果

解决方案:

var数据={
“组织1”:{
"102":[
0.1444,
0.1551,
0.2369,
0.3353,
0.1282
],
"104":[
0.309,
0.3483,
0.218,
0.0657,
0.059
]
},
“组织2”:{
"102":[
0.19444444444444448,
0.1388888888888889,
0.19444444444444448,
0.33333333333333326,
0.1388888888888889
],
"104":[
0.20588235294117646,
0.38235294117647056,
0.14705882352941177,
0.14705882352941177,
0.1176470588235294
],
},
“组织3”:{
"102":[
0.0967741935483871,
0.2903225806451613,
0.16129032258064516,
0.3548387096774194,
0.0967741935483871
],
"104":[
0.44,
0.24,
0.2,
0.04,
0.08
]
}
};
const transformedData=[];
Object.keys(数据).forEach(
f=>{
transformedData.push(数据[f]);
}
)
功能比较(a、b){
var arrA=a[“104”];
var arrB=b[“104”];
if(arrA[0]+arrA[1]arrB[0]+arrB[1]){
返回1;
}
返回0;
}
transformedData.sort(比较);

console.log(transformedData)您的确切输出是什么?前两个索引始终为0和1…按升序或降序排序?@HereticMonkey抱歉,我的意思是说数组104中前两个索引的值,而不是实际的索引。@ZunayedShahriar按升序排序这并没有对结构进行排序,而是将结构更改为可以排序的结构,这不是OP要求的。@Hereticsmonkey,我现在很困惑。让我们看看OP是怎么说的。
let orgs = Object.keys(data);
let options = [];
let selection = orgs.forEach((data, d) => {
  data["104"].forEach((val, i) => {
    options[i].data.push(val);
  })
});