【问题标题】:Split array into sub arrays and replace character将数组拆分为子数组并替换字符
【发布时间】:2015-09-28 12:19:36
【问题描述】:

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

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

代码:

    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]]

有什么建议吗?

【问题讨论】:

  • 你能告诉我们$scope.financial的初始内容吗?
  • 初始内容是这样的:[[4,25],[5,25],[3,10],[4,10]]
  • 为什么不使用带有属性名称的常规对象呢?当然,必须阅读文档才能了解不同索引的含义...

标签: javascript arrays


【解决方案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);

【讨论】:

    【解决方案2】:

    下面提到的转换器函数将接受[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]]

    fiddle

    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;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-21
      • 1970-01-01
      • 2013-11-08
      • 2016-04-01
      相关资源
      最近更新 更多