名簿の並べ替えをやってみよう

https://codeiq.jp/ace/yanai_masakazu/q528
実行速度とか考えずに、パッパっと書いたコードです。

function yourCode(obj, key) {
  // 漢字と読みのペアを読みでソートします
  var pairs = getPairs_(obj.kannji, obj.yomi).sort(function(a, b) {
    return a.yomi > b.yomi;
  });

  // ソートしたペアの配列から漢字と読みを
  // それぞれの配列にして返します
  return {
    kannji: pairs.map(function(value) {
      return value.kannji;
    }),
    yomi: pairs.map(function(value) {
      return value.yomi;
    })
  };

  // 2つの配列から同じ添字の値を
  // ペアとした配列を生成して返します
  function getPairs_(kannjiArray, yomiArray) {
    var result = [],
        i;

    // 配列の長さが異なっていた場合は例外をスローします
    if (kannjiArray.length !== yomiArray.length) {
      throw new RangeError('array length not to match');
    }

    i = kannjiArray.length;

    while (i--) {
      result.unshift({
        kannji: kannjiArray[i],
        yomi: yomiArray[i]
      });
    }

    return result;
  }
}