在javascript中映射函数

时间:2018-02-06 05:08:32

标签: javascript arrays json object

var data = [{
  id: 22,
  cno: 1,
  username: 'white',
  name: 'New Complaint',
  stype: null,
  cname: 'ff',
  product: 'ff',
}];

var finalData = data.map(x => {
  return ({ cno: x.cno + 1 })
});
console.log(finalData); // output [ { cno: 2} ]

我的预期输出我需要这个对象而不是数组,是否可以使用map?

最后我需要{ cno : 2}

3 个答案:

答案 0 :(得分:3)

由于您只是尝试对单个对象进行操作,因此您根本不应该使用地图。你应该使用类似的东西:

var finalData = { cno: data[ 0 ].cno + 1 };

示例:



var data = [{
  id: 22,
  cno: 1,
  username: 'white',
  name: 'New Complaint',
  stype: null,
  cname: 'ff',
  product: 'ff',
}];

var finalData = { cno: data[ 0 ].cno + 1 };

console.log( finalData );




答案 1 :(得分:2)

您可以使用reduce代替mapmap实际上会返回array。使用reduce可以获得理想的结果。



var data = [{
  id: 22,
  cno: 1,
  username: 'white',
  name: 'New Complaint',
  stype: null,
  cname: 'ff',
  product: 'ff',
}];

var finalData = data.reduce((acc, elem, index) => {
  acc.cno = elem.cno + 1 
  return acc
}, {});
console.log(finalData); // output { cno: 2}




答案 2 :(得分:0)

最简单的方法是使用ES6解构([data] = data;),如下例所示:



var data = [{
  id: 22,
  cno: 1,
  username: 'white',
  name: 'New Complaint',
  stype: null,
  cname: 'ff',
  product: 'ff',
}];

[data] = data; // data is now the nested object
console.log(data); // Return data as object

// After that, you can modify data however you want
data.cno += 1;
console.log(data); // Return updated data as object