如何从数组数据中仅获取一个值并将其转换为逗号分隔值。使用没有模板字面量的 javascript

how to get only one value from array data and convert it into comma separted values. using javascript without template literals

我有以下格式的数组数据

const data=  [
  {
    name: "productname",
    id: "1356",
    price: "0.00",
    category: "Health",
    position: "1",
    list: "New Products",
    stocklevel: "20",
    brand: "Health"
  },
  {
    name: "productname2",
    id: "5263",
    price: "0",
    category: "Hair",
    position: "2",
    list: "New Products",
    stocklevel: "",
    brand: "Hair"
  }]

从这个数据中,我只想要每个产品的产品名称,区别在于产品 1 和产品 2。 例如,我希望数据采用逗号分隔值的字符串格式,如下所示:-

product1name: "productname",
product2name: "productname2",
...

我尝试使用 map 函数,但无法从整个数组数据中仅获取一个或两个值。 这是我试过的代码

    var dataByComa = '';

  var Values = data
  .map(function (p, i) {
    return Object.keys(data[i]).map(function (k) {
      return "prod" +" " + ": " + JSON.stringify(data[i][k]);
    });
  }).map(function (v) {
    return v.join(",\n"); });
  var commaValues = Values.join(",\n");
return commaValues;

使用此代码我可以将数组数据转换为逗号分隔值,但我只需要产品名称。

注意 :- 不使用模板字面量。

您可以遍历数据并将值分配给外部变量,如下所示:

    let finalData = {}
    data.forEach((item, index) => {
       finalData[`product${index+1}name`] = item.name
    })

您可以使用 reduce 来做到这一点。它以一个函数作为第一个参数,一个初始值作为第二个参数(这里是一个空对象 {})。 变量“previous”跟踪(最初为空)新对象的当前状态,而函数将“数据”数组中的每个元素的名称添加到对象。

var result = data.reduce((previous, element) => {
    previous[element.name] = element.name;
    return previous;
}, {})

编辑: 正如我所意识到的,您实际上想要一个字符串作为结果。在那种情况下你可以这样做:

var result = data.reduce((previous, element) => {
    previous[element.name] = element.name;
    return previous;
}, {})
var csvWithBrackets = JSON.stringify(result)
var csv = csvWithBrackets.substring(1, csvWithBrackets.length-1)

不过 Pzutils 的答案似乎更紧凑。

编辑:我更清楚 OP 现在在寻找什么 - 这是一个满足所有要求的答案

let commaValues = ""
for (let i = 0; i < data.length; i++) {
    commaValues += ("product" + (i + 1) + "name: " + "\"" + data[i]["name"] + "\", ")
}
// result: 'product1name: "productname", product2name: "productname2", '