tengo datos de matriz en el formato que se indica a continuación
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" }]de estos datos solo quiero el nombre del producto de cada producto por diferencia de producto1, producto2. por ejemplo, quiero los datos en formato de cadena por valores separados por comas como se indica a continuación:
product1name: "productname", product2name: "productname2", ...Intenté usar la función de mapa pero no pude tomar solo uno o dos valores de toda la matriz de datos. aquí está el código de lo que probé
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;con este código puedo convertir datos de matriz en valores separados por comas, pero solo quiero nombres de productos.
Nota : - Sin usar literales de plantilla de plantilla.
Puedes hacerlo usando reducir. Toma una función como primer parámetro y un valor inicial como segundo parámetro (aquí un objeto vacío {}). La variable "anterior" realiza un seguimiento del estado actual del nuevo objeto (inicialmente vacío), mientras que la función agrega el nombre de cada elemento de la matriz de "datos" al objeto.
var result = data.reduce((previous, element) => { previous[element.name] = element.name; return previous; }, {})EDITAR: Como me di cuenta, en realidad quieres una cadena como resultado. En ese caso podrías hacer:
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)Sin embargo, la respuesta de Pzutils parece más compacta.
Editar: ahora tengo más claro lo que buscaba el OP: aquí hay una respuesta que cumple con todos los requisitos
let commaValues = "" for (let i = 0; i < data.length; i++) { commaValues += ("product" + (i + 1) + "name: " + "\"" + data[i]["name"] + "\", ") } // result: 'product1name: "productname", product2name: "productname2", 'Puede iterar a través de los datos y asignar el valor a una variable externa como esta:
let finalData = {} data.forEach((item, index) => { finalData[`product${index+1}name`] = item.name })