创新的JavaScript功能改进

时间:2018-11-23 10:05:39

标签: javascript

我经常看到面试问题/答案以自我升级,其中一个问题是:您如何编写一个函数来构建深层阵列?

示例:

var array = [1,[2],[3,[4,[5,[7,[8]]]]],[6]];

面试官像下来的代码一样回答它:

var res = array.toString().split(',');

但是SO不接受,为什么?它的功能很棒,并且访问者不用新JavaScript的flatten功能。

1 个答案:

答案 0 :(得分:4)

在以下情况下,提供的解决方案不起作用:

var input = [ { month: 'Jan', value: 3 },
  { month: 'Jan', value: 3.5 },
  { month: 'Feb', value: 2.1 },
  { month: 'Mar', value: 6 },
  { month: 'Apr', value: 4.3 },
  { month: 'May', value: 5.5 },
  { month: 'Jun', value: 7 },
  { month: 'Jun', value: 9 },
  { month: 'Jul', value: 7 },
  { month: 'Jul', value: 9 },
  { month: 'Jul', value: 7 },
  { month: 'Aug', value: 9 },
  { month: 'Sep', value: 9 },
  { month: 'Sep', value: 9 },
  { month: 'Oct', value: 8 },
  { month: 'Oct', value: 5 },
  { month: 'Oct', value: 3 },
  { month: 'Nov', value: 12 },
  { month: 'Nov', value: 19.5 } ];

var result = [];

for (var i = 0; i < input.length; i++) {
    var data = input[i];
    var found=false;
    for(var j=0; j<result.length; j++) {
        if(result[j].month === data.month) {
            found=true;
            result[j].value += data.value;
            break;
        }
    }
    if(!found) {
        result.push(data);
    }
}

//The result array is your desired result
console.log(result);

您将得到一个由3个元素组成的数组,而不是2个。问题没有对值的类型做任何假设。