根据输入字段创建一个数组,从json

时间:2018-03-27 03:20:12

标签: jquery sorting

首先,我需要创建一个数组,其中播放器的名称取自输入#P1和#P2和#P3。

示例:使用成员[class]查找站立[code]并将stand [rank]放入数组中添加的数字字段。

按[rank]和[name]排序数组。

输出名为“players.txt”的分隔文件---> “保罗|吉姆|鲍勃”这一部分在JS下面失踪了。我如何写给玩家.TXT?

HTML :(带有播放器名称[#P1]和类[Y1]的html代码)

<div class="block">
<div class="line"><input type = "text" id = "P1" name = "N1" /></div>
<div class="line"><input type = "text" id="Y1"></div>
</div> <br />

<div class="block">
<div class="line"><input type = "text" id = "P2" name = "N2" /></div>
<div class="line"><input type = "text" id="Y2"></div>
</div> <br />

<div class="block">
<div class="line"><input type = "text" id = "P3" name = "N3" />
  <div class="line"><input type = "text" id="Y3"></div>
</div> <br />

JSON:

<script>
var members = [
{"Class": "A", "Name": "Paul"},
{"Class": "C", "Name": "Jim"},
{"Class": "B", "Name": "Bob"},
];
</script>

<script>
var standing = [
{"code" : "A", "rank" :  "1"},
{"code" : "B", "rank" :  "2"},
{"code" : "C", "rank" :  "3"},
];
</script>

JS:

var memberstosort = [], sorted = [];

function sort() {
memberstosort.sort(function(l, r) { return l.rank - r.rank});
Object.keys(memberstosort).map(function(objectKey, index) {
var value = memberstosort[objectKey].name;
sorted.push(value);

});
sorted = sorted.join('|');
document.getElementById('result').innerHTML = sorted;
}
var currentname, currentclass, index, currentrank;

function fillClass(id) {
currentname = document.getElementById(id).value;
index = members.findIndex(checkClass);
currentclass = members.filter(checkClass).length ? 
members.filter(checkClass)[0].Class : null;
if (currentclass) {
currentrank = standing.filter(checkRank).length ? 
standing.filter(checkRank)[0].rank : null;
} else {
return;
}
var currentmember = {};
currentmember.name = currentname;
currentmember.rank = currentrank;
memberstosort.push(currentmember);
}

function checkClass(player) {
return player.Name.toLowerCase() === currentname.toLowerCase();
}

function checkRank(standing) {
return standing.code === currentclass;
}

1 个答案:

答案 0 :(得分:-1)

希望这会对你有所帮助。我不确定,因为我真的不在

var members = [{
    "Class": "A",
    "Name": "Paul"
  },
  {
    "Class": "C",
    "Name": "Jim"
  },
  {
    "Class": "B",
    "Name": "Bob"
  },
];

var standing = [{
    "code": "A",
    "rank": "1"
  },
  {
    "code": "B",
    "rank": "2"
  },
  {
    "code": "C",
    "rank": "3"
  },
];
var memberstosort = [], sorted = [];

function sort() {
  memberstosort.sort(function(l, r) { return l.rank - r.rank});
    Object.keys(memberstosort).map(function(objectKey, index) {
    var value = memberstosort[objectKey].name;
    sorted.push(value);

    });
    sorted = sorted.join('|');
    document.getElementById('result').innerHTML = sorted;
}
var currentname, currentclass, index, currentrank;

function fillClass(id) {
  currentname = document.getElementById(id).value;
  index = members.findIndex(checkClass);
  currentclass = members.filter(checkClass).length ? members.filter(checkClass)[0].Class : null;
  if (currentclass) {
    currentrank = standing.filter(checkRank).length ? standing.filter(checkRank)[0].rank : null;
  } else {
    return;
  }
  var currentmember = {};
  currentmember.name = currentname;
  currentmember.rank = currentrank;
  memberstosort.push(currentmember);
}

function checkClass(player) {
  return player.Name.toLowerCase() === currentname.toLowerCase();
}

function checkRank(standing) {
  return standing.code === currentclass;
}

HTML:

<div class="block" id="player1">
  <div class="line">Player 1<input type="text" id="P1" name="N1" onblur="fillClass(this.id)" /></div>
  <div class="line"> Class <input type="text" id="Y1"></div>
</div> <br />

<div class="block">
  <div class="line">Player 2<input type="text" id="P2" name="N2" onblur="fillClass(this.id)"/></div>
  <div class="line">Class<input type="text" id="Y2"></div>
</div> <br />

<div class="block">
  <div class="line">Player 3<input type="text" id="P3" name="N3" onblur="fillClass(this.id)"/>
    <div class="line">Class<input type="text" id="Y3"></div>
  </div> <br />
<div id="result">

</div>
  <button onclick="sort()">
Check
</button>