javascript数组相互关联/相互对应

时间:2016-03-29 19:15:06

标签: javascript arrays

我有两个数组,一个是大数字串,另一个是加在一起的大数字的总和,有什么方法可以让两个数组相互对应?喜欢使第一个数组中的位置[2]与第二个数组中的相同位置相对应。更具体地说,我最初建立了大数组,我编写了一个创建第二个数组的函数,给出了大数字中每个数字的总和(第一个数组中的123456789,第二个数组中为45) ),但我需要能够链接两个数组,因为第一个数组需要使用任意数量的数字字符串。 (对不起,如果这令人困惑;我只是对此深有所了。)

以下是我正在处理的代码:

var theArray = ["585-777-7279", "922-901-8934", "112-211-4857", "994-934-9989"];

var plsWork = function() {
    var theArrayTwo = theArray.join().replace(/-/g, "");
    var theArrayThree = theArrayTwo.split(",").map(Number);
    var phoneSum = theArrayThree.map(function (a) {
        return Array.prototype.slice.call(a.toString()).map(Number).reduce(function(b,c) {
            return b + c;
        });
    })
    phoneSum.sort().reverse();

    console.log(phoneSum);
};

基本上,我只是想知道是否有一种方法可以让两个数组(原始和在函数中创建的数组)对应。理想情况下,我希望能够显示最小的和与第一个数组中的数字相对应的地方。

1 个答案:

答案 0 :(得分:0)

如果您已经拥有这两个数组,那么将它们相互关联的最佳方式是按照@webdeb的建议创建一个对象数组。

如果您拥有大数字数组,那么您想要的只是创建第二个数组,在每个索引中包含第一个数组中数字的所有数字的总和,而不是我将使用以下代码:

var large_numbers = [1234, 2345, 3456];

function sumDigits(number) {
  var digitsArray = [],
        string = number.toString(); // convert number to string

  for (let i = 0; i < string.length; i++) {
    // push the numbers to a temporary array so that 
    // I can sum them one by one later
    digitsArray.push(parseInt(string[i], 10));
  }

  // return the sum of all the elements of the digitsArray
  return tempArray.reduce(function(prev, curr) {
    return prev + curr;
  })
}

var sumsArray = large_numbers.map(sumDigits); // -> [10, 14, 18]

sumsArray包含同一索引中大数字数组中所有数字的总和。