2017-03-29 14 views
-1

配列から最初の2つの項目を選択し、フルネームではなく、オブジェクトから各人のファーストネームだけを選択したいとします。これが結果です配列から最初に2項目を選択するには?

index.htmlを

<body> 
<button onclick="loadajax();">laod ajax</button> 
<div id = "update"></div> 

<script src="jquery.js"></script> 
<script src="script.js"></script> 
</body> 

script.js

function loadajax(){ 
    var request; 
    if (window.XMLHttpRequest) { 
     request = new XMLHttpRequest(); 
    } else { 
     request = new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
    request.open('GET', 'data.json'); 
    request.onreadystatechange = function() { 
     if ((request.readyState===4) && (request.status===200)) { 
      var items = JSON.parse(request.responseText); 
      var output = '<ul>'; 
      for (var key in items) { 
       output += '<li>his name is:' + items[key].name + ' with the id of:'+ items[key].id +'</li>'; 
      } 
      output += '</ul>'; 
      document.getElementById('update').innerHTML = output; 
     } 
    } 
    request.send(); 
} 

data.json

[ 
    { 
    "name":"Barot Bellingham", 
    "id":"1" 
    }, 
    { 
    "name":"alex benjan", 
    "id":"2" 
    }, 
    { 
    "name":"jony lekson", 
    "id":"3" 
    } 
] 

は、これらの私のコードです

  • 彼の名前は、次のとおりのIDを持つBarotベーリング:1
  • 彼の名前である:のIDを持つアレックスbenjan:2
  • 彼の名前である:3
:のIDを持つジョニーズのlekson

しかし、私がしたいことはこれです:

  • 彼の名前は次のとおりです。BarotのIDを持つ:1人の
  • 彼の名前は次のとおりです。アレックスのIDを持つ:2

あなたはこれを行う方法を知っていますか?

答えて

1

あなたはsliceを使用することができます。

for (var key in items.slice(0, 2)) { 

しかし、一般的に、アレイでfor...inを使用しないことをお勧めします。 forEachを使用します。

items.slice(0, 2).forEach(function (item) { 
    output += '<li>his name is:' + item.name + ' with the id of:'+ item.id +'</li>'; 
}); 
さらに良い

または、joinと組み合わせてmapを使用します。

var output = '<ul>' + items.slice(0, 2).map(function (item) { 
    return '<li>his name is:' + item.name + ' with the id of:'+ item.id +'</li>'; 
}).join('') + '</ul>'; 

最初の名前が(これは、100%正しいではありませんsplitで最初の単語を取ることによって抽出することができます

var output = '<ul>' + items.slice(0, 2).map(function (item) { 
    return '<li>his name is:' + item.name.split(' ')[0] + ' with the id of:'+ item.id +'</li>'; 
}).join('') + '</ul>'; 

NB:いくつかの最初の名前が二つ以上の単語)で構成することができ、これは、AjaxやJSON、柱とはほとんどありループと配列メソッドを持つst。

+0

おかげで、あなたは完全な名前の最初の名前instateを選択する方法を知っていますか? – Alex

+0

'items [key] .name.split( '')[0]' – trincot

0

配列を返す別のアプローチ:

var jsonArray = [ 
    { 
    "name":"Barot Bellingham", 
    "id":"1" 
    }, 
    { 
    "name":"alex benjan", 
    "id":"2" 
    }, 
    { 
    "name":"jony lekson", 
    "id":"3" 
    } 
]; 

var user = jsonArray .map((user, index) => { 
     return { 'id': user.id, 'name' : user.name.split(' ')[0] }; 
}).slice(0, 2) 

出力: // [{"id":"1","name":"Barot"},{"id":"2","name":"alex"}]

+0

JSONはJavaScript配列ではなく文字列形式なので、このような変数* json *を呼び出すのは混乱します。 – trincot

関連する問題