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

Javascript数组,查找并组合具有重复值的条目

Javascript数组,查找并组合具有重复值的条目,javascript,arrays,Javascript,Arrays,我有以下动态生成的数组: var myArray = ("0% { left:74px; top:202px; }" , "44% { left:427px; top:122px; }", "0% { font-size:11px; }", "55% { font-size:49px; }" ); 有两个条目具有相同的起始值:0%。我如何找到并将其组合在一起: form: 0% { left:74px; top:202px; }, 0% { font-size:11px; }, to 0%

我有以下动态生成的数组:

var myArray = ("0% { left:74px; top:202px; }"   , "44% { left:427px; top:122px; }", "0% { font-size:11px; }", "55% { font-size:49px; }" );
有两个条目具有相同的起始值:0%。我如何找到并将其组合在一起:

form:
0% { left:74px; top:202px; },
0% { font-size:11px; },
to
0% { left:74px; top:202px; font-size:11px;},
多谢各位


将代码编辑为有效数组。

这是一个只有一个成员的数组文本。您需要在逗号之间结束字符串以分隔成员。我将尝试将每个成员重写为对象文本,并使用json方法在字符串和对象之间交替。在对象形式中,您可以执行mixin来合并相似的成员。

这是一个只有一个成员的数组文本。您需要在逗号之间结束字符串以分隔成员。我将尝试将每个成员重写为对象文本,并使用json方法在字符串和对象之间交替。在对象形式中,您可以进行混合以合并相似的成员。

哦,我明白了。。你正在打印你的阵列,这就是你得到的,对吗

那样的话

for(var i =0; i< myArray.length ; i++){
  for(var j=i+1; j<myArray.length;j++){
      if(i == j) continue;
      if(myArray[i].substring(0,3) == myArray[j].substring(0,3)){//found matching first 2 chars
         myArray[i] = myArray[i].substring(0,3) + myArray[j].replace(/\{(.*?)\}/,"$1 ;") + myArray[i].substring(4);

        myArray.splice(j--,1);//remove the doup and decrease the counter so you don't skip one now that the array is shorter

      }
  }
}

哦,我明白了。。你正在打印你的阵列,这就是你得到的,对吗

那样的话

for(var i =0; i< myArray.length ; i++){
  for(var j=i+1; j<myArray.length;j++){
      if(i == j) continue;
      if(myArray[i].substring(0,3) == myArray[j].substring(0,3)){//found matching first 2 chars
         myArray[i] = myArray[i].substring(0,3) + myArray[j].replace(/\{(.*?)\}/,"$1 ;") + myArray[i].substring(4);

        myArray.splice(j--,1);//remove the doup and decrease the counter so you don't skip one now that the array is shorter

      }
  }
}

这是一个有效的javascript数组吗?这是我数组的一部分。应该对[]有效有一个介于55和{之间的点。我已经删除了它。数组应该是有效的。它仍然不是一个有效的数组。那XX%是什么东西?那是一些动画还是什么?那是一个有效的javascript数组吗?这是我数组的一部分。应该对[]有效有一个介于55和之间的点{。我已经删除了它。数组应该是有效的。它仍然不是一个有效的数组。那XX%是什么东西?那是一些动画还是什么?对不起,代码有错误。我不知道为什么…我可以这样做:var myArray=(“0%{left:74px;top:202px;}”,“44%{left:427px;top:122px;}”,“等等”);我的代码可能有bug,但理论上你应该这么做……首先让你的数组看起来正确(如我在答案底部所示)。然后在数组中循环查找前几个字符的匹配项,并将它们合并在一起,然后拼接出重复项。抱歉,代码有错误。我不知道为什么…我可以将数组设置为:var myArray=(“0%{left:74px;top:202px;}”,“44%{left:427px;top:122px;}”,“etc”,“etc”);我的代码可能有bug,但理论上你应该这么做……首先让数组看起来正确(如我在答案底部所示)。然后在数组中循环查找前几个字符的匹配项,并将它们合并在一起,然后拼接出重复项。