Javascript 如果for循环中的条件不起作用,则为第二个

Javascript 如果for循环中的条件不起作用,则为第二个,javascript,arrays,for-loop,if-statement,Javascript,Arrays,For Loop,If Statement,我有一个数组data,其中包含如下对象: data = [{ "array": "arr_id_0", "direct": "+", "axis": "x", "s": "1" }, { "array": "arr_id_1", "direct": "+", "axis": "y", "s": "2" }, { "array": "arr_id_2", "direct": "+", "axis

我有一个数组
data
,其中包含如下对象:

data = [{
    "array": "arr_id_0",
    "direct": "+",
    "axis": "x",
    "s": "1"
  },
  {
    "array": "arr_id_1",
    "direct": "+",
    "axis": "y",
    "s": "2"
  },
  {
    "array": "arr_id_2",
    "direct": "+",
    "axis": "z",
    "s": "3"
  },
  {
    "array": "arr_id_3",
    "direct": "+",
    "axis": "x",
    "s": "4"
  }
]
轴可以更改为
x
y
z
。根据轴的不同,我需要将
s
的值写入相应的数组
sum\u x
sum\u y
sum\u z
。最后,我需要每个数组的和

我使用for循环编写了以下代码来迭代
数据
,选择s值并将其写入
总和
-数组的on中

function sum_axis() {
  var sum_x = [];
  var sum_y = [];
  var sum_z = [];
  for (var i = 0; i < data.length; i++) {
    if (data[i]['axis'] == 'x') {
      sum_x.splice(i, 1, data[i]['s'])
    };
    if (data[i]['axis'] == 'y') {
      sum_y.splice(i, 1, data[i]['s'])
    };
    if (data[i]['axis'] == 'z') {
      sum_z.splice(i, 1, data[i]['s'])
    };
    console.log(data)
    console.log(sum_x, sum_y, sum_z)
  }
}
预期产出为:

sum_x = [1,4]
sum_y = [2]
sum_z = [3]
sum_x = [1,2,3,4]
sum_y = []
sum_z = []
实际产出为:

sum_x = [1,4]
sum_y = [2]
sum_z = [3]
sum_x = [1,2,3,4]
sum_y = []
sum_z = []

你的密码没问题。试着在你的控制台上运行这个

var data=[{“array”:“arr_id_0”,“direct”:“+”,“axis”:“x”,“s”:“1”},
{“数组”:“arr_id_1”,“direct”:“+”,“axis”:“y”,“s”:“2”},
{“数组”:“arr_id_2”,“direct”:“+”,“axis”:“z”,“s”:“3”},
{“数组”:“arr_id_3”,“direct”:“+”,“axis”:“x”,“s”:“4”}]
函数和_轴(){
var sum_x=[];
var sum_y=[];
var sum_z=[];

对于(var i=0;i您的代码正在工作,混淆可能是因为您在循环中有最后一个
控制台.log
,如果您将它从循环中取出,那么您将得到想要的结果

var数据=[{
“数组”:“arr\u id\u 0”,
“直接”:“+”,
“轴”:“x”,
“s”:“1”
},
{
“数组”:“arr\u id\u 1”,
“直接”:“+”,
“轴”:“y”,
“s”:“2”
},
{
“数组”:“arr_id_2”,
“直接”:“+”,
“轴”:“z”,
“s”:“3”
},
{
“数组”:“arr_id_3”,
“直接”:“+”,
“轴”:“x”,
“s”:“4”
}
];
函数和_轴(){
var sum_x=[];
var sum_y=[];
var sum_z=[];
对于(变量i=0;i
我建议您给出一个orgin数组,并给出一个预期的输出?这比您的文字和代码更清楚。我刚刚更新了它。我希望现在这更有意义。您的代码工作正常。请提供一个小提琴来演示这个问题。您确定您的比较是double
=
?您确定没有吗t不小心将
sum_x.splice
写入三次,而不是
sum_y
sum_z
?请提供执行时显示您所说结果的代码。问题是
-值没有正确传递到数组。因此基本上它是在
位置写入
x
。I我现在已经修复了。但是谢谢你的
console.log
提示。这实际上让我意识到了实际的问题。我有点意识到了。请看我对上面答案的评论。