Javascript 函数遍历对象数组,并将选定对象属性展平为字符串

Javascript 函数遍历对象数组,并将选定对象属性展平为字符串,javascript,arrays,function,object,Javascript,Arrays,Function,Object,我正在尝试编写一个自定义函数,该函数通过对象数组进行迭代,并通过以逗号连接的字符串形式返回任何选定的对象属性键来展平它们 也许最好用代码来解释: var products = [ { "id": 1, "variants": { "colour": "black" }, }, { "id": 2, "variants": { "colour": "red" } } ]; function joinedByC

我正在尝试编写一个自定义函数,该函数通过对象数组进行迭代,并通过以逗号连接的字符串形式返回任何选定的对象属性键来展平它们

也许最好用代码来解释:

var products = [
  {
    "id": 1,
    "variants": {
      "colour": "black"
    },
  },
  {
    "id": 2,
    "variants": {
      "colour": "red"
    }
  }
];

function joinedByComma(arr, keys) {
  // some code
}

joinedByComma(products, ["variants", "colour" ]);
// returns "black,red"
关于如何编写函数
joinedbycoma
,有什么见解吗?第二个数组参数中的项数可以是任意长度,具体取决于对象的嵌套方式

 const joinedByComma = (arr, keys) =>
   arr.map(el => keys.reduce((obj, key) => obj[key] || {}, el)).join();

通过将键减少到对象的值,将数组映射到每个条目,然后加入它们。

您尝试过什么吗?到底是什么问题?太好了,谢谢你的见解。我将尝试扩展代码以包括其他边缘情况,例如,如果嵌套属性是另一个数组而不是对象