Javascript中的元组列表

Bor*_*ris 26 javascript arrays json list node.js

假设我收到一个包含有关人员信息的JSON字符串.现在我循环遍历所有JSON对象并提取名称和年龄或每个人.

如何将这些元组作为元组存储在列表中以便进一步处理?(例如,通过另一个功能)

Roy*_*ker 17

假设传入的JSON类似于以下内容:

var incomingList = [{
  "name": "Homer Simpson",
  "age": 45,
  "occupation": "Nuclear Plant Technician",
    ...
},{
  "name": "Marge Simpson",
  "age": 44,
  "occupation": "Homemaker",
    ...
},
  ...
]
Run Code Online (Sandbox Code Playgroud)

您只能将名称和年龄提取到类似的对象数组中:

var nameAndAgeList = incomingList.map(function(item) {
  return {
    name: item.name,
    age: item.age
  };
});
Run Code Online (Sandbox Code Playgroud)

JavaScript只有对象和数组,而不是元组.如果您的数据是关联的(每个记录都有键值对,字段名称作为键),那么上述方法将正常工作.


但是,如果需要将单个对象中的名称和年龄关联为键值对(如关联数组),并将名称作为键,将年龄作为值,则以下内容将起作用(假设名称是唯一的):

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


arc*_*rty 6

JS 没有“元组”类型的对象。(请参阅:元组中的 JavaScript 变量赋值

您可以创建自己的元组类,也可以简单地使用长度为 2 的数组(因此您最终会得到一个长度为 2 的数组)


Mik*_*ain 5

基于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);
}
Run Code Online (Sandbox Code Playgroud)