web-dev-qa-db-ja.com

Javascriptのタプルのリスト

人に関する情報を含むJSON文字列を受け取ったとしましょう。次に、すべてのJSONオブジェクトをループして、名前と年齢または各個人を抽出します。

これらをさらに処理するためにタプルとしてリストに保存するにはどうすればよいですか? (例えば、別の機能による)

26
Boris

着信JSONが次のようなものであると仮定します。

var incomingList = [{
  "name": "Homer Simpson",
  "age": 45,
  "occupation": "Nuclear Plant Technician",
    ...
},{
  "name": "Marge Simpson",
  "age": 44,
  "occupation": "Homemaker",
    ...
},
  ...
]

名前と年齢を類似したオブジェクトの配列にのみ抽出できます。

var nameAndAgeList = incomingList.map(function(item) {
  return {
    name: item.name,
    age: item.age
  };
});

JavaScriptにはオブジェクトと配列のみがあり、タプルはありません。データが連想データである場合(各レコードにはフィールド名をキーとするキーと値のペアがあります)、上記のアプローチはうまく機能します。


ただし、単一のオブジェクトの名前と年齢をキーと値のペア(連想配列など)としてキーと名前として年齢と関連付ける必要がある場合は、次のように機能します(名前が一意であると仮定):

var namesAndAges = incomingList.reduce(function(result,item) {
  result[item.name] = item.age;
  return result;
},{});
17
Roy Tinker

tuples を具体的に要求したように、Vikramの答えに基づいて、以下は配列の配列、つまりタプルのリストを返します。

var parsed = JSON.parse('[{"name":"john", "place":"usa", "phone":"12345"},{"name":"jim", "place":"canada", "phone":"54321"}]');

var people = [];
for (var i=0; i < parsed.length; i++) {
   var person = [parsed[i].name, parsed[i].place, parsed[i].phone];
   people.Push(person);
}
5

JSには「タプル」タイプのオブジェクトはありません。 (参照: タプルからのJavaScript変数の割り当て

独自のTupleクラスを作成するか、単に長さ2の配列を使用できます(したがって、長さ2の配列の配列になります)。

3
arcyqwerty

JSON文字列自体をオブジェクトに変換しないもの。 JSONは、JavaScriptでネイティブにサポートされています* [〜#〜] j [〜#〜] * ava * [〜#〜] s [〜#〜] * cript * [〜#〜] o [〜#〜] * bject * [〜#〜] n [〜#〜] *引用。

JSON文字列があるとします-

"[{name:john,place:usa,phone:12345},{name:jim,place:canada,phone:54321}]"

次の方法でjsオブジェクトに変換できます-

var persons = JSON.parse("[{name:john,place:usa,phone:12345},{name:jim,place:canada,phone:54321}]");

これで次のようにアクセスできます-すべてのタプル/レコードをループします-

for (var i=0;i<persons.length;i++) {
   var person = persons[i];
   var name = person.name;
   var place = person.place;
   var phone = person.phone;
}
3
Vikram Rao

Tupleで順序付けられたペアのようなものを意味する場合、属性名が人物の「名前」であり、値が人物の「年齢」であるオブジェクトを持つことができます。

このような:

var tupleObj = {};
for (var i in jsonObj) {
    tupleObj[jsonObj[i].name] = jsonObj[i].age;
}
1
tewathia