在javascript中映射函数

问题描述 投票:-1回答:3
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}

javascript arrays json object
3个回答
3
投票

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

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

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}

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
   
© www.soinside.com 2019 - 2024. All rights reserved.