Javascript中的元组列表

假设我收到一个包含有关人员信息的JSONstring。 现在我遍历所有的JSON对象,并提取名称和年龄或每个人。

我将如何将它们作为元组存储在列表中以供进一步处理? (例如通过另一个function)

假设传入的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只有对象和数组,而不是元组。 如果你的数据是关联的(每个logging都有字段名称作为关键字的键值对),那么上面的方法可以正常工作。


但是,如果您需要将名称和年龄作为键 – 值对(如关联数组)的名称作为键和年龄作为值关联起来,则以下操作将会起作用(假定名称是唯一的):

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

什么不把JSONstring本身转换成一个对象。 JSON本来就是javascript支持的,毕竟它是* J * ava * S * cript * O * bject * N * otation。

假设你有一个jsonstring –

 "[{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}]"); 

现在你可以像这样访问它 – 循环所有的元组/logging –

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

以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); } 

JS没有“元组”types的对象。 (请参阅: 来自元组的JavaScriptvariables赋值 )

你可以创build你自己的元组类,或者简单地使用长度为2的数组(所以你最终得到一个长度为2的数组)

如果按照元组来表示,就像有序对一样,你可以有一个属性名称作为人的“名字”,值作为人的“年龄”。

喜欢这个:

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