将数组拆分为子数组并替换字符

Split array into sub arrays and replace character

本文关键字:数组 替换 字符 拆分      更新时间:2023-09-26

我需要将数组拆分为几个子数组并替换某个字符。

首先运行一个函数来计算数组中重复项的个数。然后我用这些值和这些值的实例数构建一个新的数组。

代码:

    angular.forEach($scope.financial, function(data) {
        counts[data] = (counts[data] || 0)+1; 
    })
结果:

[4, {25: 4}, 5, {25: 1}, 3, {10: 1}, 4, {10: 1}]

我要找的是将数组分成几个子数组,并用逗号替换冒号。

:

[[4,25,4],[5,25,1],[3,10,1],[4,10,1]]

有什么建议吗?

这可以通过一个简单的循环来完成。但是,如果不能保证输入的格式,建议对数据的完整性进行一些检查。

function getKey(o) {
  for (var prop in o) {
    if (o.hasOwnProperty(prop)) {
      return prop;
    }
  }
}
var data = [4, {25: 4}, 5, {25: 1}, 3, {10: 1}, 4, {10: 1}];
var i = 0;
var output = [];
var key;
for (i = 0; i < data.length; i += 2) {
  key = getKey(data[i + 1]);
  output.push([data[i], parseInt(key, 10), data[i + 1][key]]);
}
//Print the output
console.log(output);
var el = document.createElement('div');
el.innerHTML = JSON.stringify(output);
document.body.appendChild(el);

下面提到的转换函数将接受类型为[4, {25: 4}, 5, {25: 1}, 3, {10: 1}, 4, {10: 1}]的reponseArray并转换为子数组[[4,25,4],[5,25,1],[3,10,1],[4,10,1]]

小提琴

function converter(responseArray) {
    var mainArray=[], subArray;
    for (var i = 0; i < responseArray.length; i++) { 
        if(i%2 == 0) {
         subArray= [];
         subArray.push(responseArray[i]);
        } else {
             var obj = responseArray[i];
             for(var key in obj) {
                subArray.push(key * 1);
                subArray.push(obj[key] * 1);
             }
             mainArray.push(subArray);
        }
    }
    console.log(mainArray);
    return mainArray;
}