Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.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/2/jquery/85.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_Jquery_Arrays - Fatal编程技术网

Javascript 如果找不到值,则插入到数组中

Javascript 如果找不到值,则插入到数组中,javascript,jquery,arrays,Javascript,Jquery,Arrays,我有一个这样构建的阵列: test[0].age = "15-24"; test[0].value= "5"; test[1].age = "45-54"; test[1].value= "10"; ageRange[0] = "1-14"; ageRange[1] = "15-24"; 等 我有另一个这样构建的阵列: test[0].age = "15-24"; test[0].value= "5"; test[1].age = "45-54"; test[1].value= "10

我有一个这样构建的阵列:

test[0].age = "15-24"; test[0].value= "5";

test[1].age = "45-54"; test[1].value= "10";
ageRange[0] = "1-14";

ageRange[1] = "15-24";

我有另一个这样构建的阵列:

test[0].age = "15-24"; test[0].value= "5";

test[1].age = "45-54"; test[1].value= "10";
ageRange[0] = "1-14";

ageRange[1] = "15-24";

Agrange有所有的年龄范围,而测试数组只有其中的一部分


我希望重建测试数组,以包含Agrange数组的所有年龄段,如果这些年龄段不在数组中,请为它们指定一个值0。这样做的最佳方式是什么?另外-它们需要按顺序添加。

您可以使用新范围迭代数组,并在检查左侧部分的同时迭代
测试
数组。如果左侧部分不相等,则在实际位置向测试阵列插入一个新对象

var test=[{age:“15-24”,value:“5”},{age:“45-54”,value:“10”}],
Agrange=[“1-14”,“15-24”],
i=0;
Agrange.forEach(函数(a){
函数getLeft(s){return+s.split('-')[0];}
var left=getLeft(a);
while(getLeft(test[i].age)

.as console wrapper{max height:100%!important;top:0;}
您可以使用新范围迭代数组,并在检查左侧部分时迭代
测试
数组。如果左侧部分不相等,则在实际位置向测试阵列插入一个新对象

var test=[{age:“15-24”,value:“5”},{age:“45-54”,value:“10”}],
Agrange=[“1-14”,“15-24”],
i=0;
Agrange.forEach(函数(a){
函数getLeft(s){return+s.split('-')[0];}
var left=getLeft(a);
while(getLeft(test[i].age)
。作为控制台包装{最大高度:100%!重要;顶部:0;}
输出

JSON.stringify(NewArray)

“[{“年龄”:“15-24”,“价值”:“5”},{“年龄”:“25-30”,“价值”:“10”},{“年龄”:“45-50”,“价值”:“15”},{“年龄”:“55-60”,“价值”:“20”},{“年龄”:“30-35”,“价值”:0},{“年龄”:“40-45”,“价值”:0}”

输出

JSON.stringify(NewArray)

“[{“年龄”:“15-24”,“价值”:“5”},{“年龄”:“25-30”,“价值”:“10”},{“年龄”:“45-50”,“价值”:“15”},{“年龄”:“55-60”,“价值”:“20”},{“年龄”:“30-35”,“价值”:0},{“年龄”:“40-45”,“价值”:0}”

我最终得到了一些帮助,并提出了这个解决方案,这对我来说更容易理解,尽管或多或少与user1960808的解决方案相同。我非常感谢@user1960808和@Nina Scholz的帮助,这两个解决方案都非常有效,都是解决问题的有趣方法

编辑:MOD可以随意标记这些答案,因为它们都是有效的

我最终得到了一些帮助,并提出了这个解决方案,这对我来说更容易理解,尽管或多或少与user1960808的解决方案相同。我非常感谢@user1960808和@Nina Scholz的帮助,这两个解决方案都非常有效,都是解决问题的有趣方法


编辑:MOD可以随意将其中任何一个标记为答案,因为它们都是有效的

因此,如果存在多个年龄
15-24
值,那么应该求和吗?如果
test
包含的年龄范围不在
ageRange
数组中,该怎么办?您可以发布完整的代码吗?@Weedoze-在本例中,年龄只有唯一的索引,因此无需sum@John第二个问题呢
45-54
不存在于
Agrange
@Weedoze是的-正如我在问题中所说的,所有年龄范围都包括在内。因此,如果存在多个年龄
15-24
的值,应该求和吗?如果
test
包含的年龄范围不在
ageRange
数组中,该怎么办?您可以发布完整的代码吗?@Weedoze-在本例中,年龄只有唯一的索引,因此无需sum@John第二个问题呢
45-54
不存在于
Agrange
@Weedoze是的-正如我在问题中所说,所有年龄段都包括在内