返回值数组Javascript

时间:2019-03-09 22:28:41

标签: javascript arrays ecmascript-6

我需要知道是否有一种奇特的方法来返回由对象数组的属性创建的字符串数组。这些对象的属性也是一个数组。

例如数据:

[
 {
  servicesOffered: ["x","Y"]
 },
 {
  servicesOffered: ["z","w"]
 }
]

我尝试使用点差运算符看中了,但没有用。我知道我可以再次迭代提供的服务数组,但是我不知道是否有更好的方法或更好的方法来实现这一点。

代码:

 getServices(results: Business[]): string[] {
    return results.map(({ servicesOffered }) => {
      const t = servicesOffered;
      return ...t;
    });
  }

预期产量

["x","Y","z","w"]

2 个答案:

答案 0 :(得分:3)

使用Array.flatMap()代替地图:

function getServices(results) {
  return results.flatMap(({ servicesOffered }) => servicesOffered);
}

const data = [{"servicesOffered":["x","Y"]},{"servicesOffered":["z","w"]}];

const result = getServices(data);

console.log(result);

如果不支持flatMap,则可以使用Array.map()进行扩展,并使用Array.concat()来展平数组:

function getServices(results) {
  return [].concat(...results.map(({ servicesOffered }) => servicesOffered));
}

const data = [{"servicesOffered":["x","Y"]},{"servicesOffered":["z","w"]}];

const result = getServices(data);

console.log(result);

答案 1 :(得分:1)

使用功能reduce

let arr = [ {  servicesOffered: ["x","Y"] }, {  servicesOffered:["z","w"] }],
    result = arr.reduce((a, {servicesOffered}) => a.concat(servicesOffered), []);
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }