如何从数组数据中仅获取一个值并将其转换为逗号分隔值。使用没有模板字面量的 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", '
我有以下格式的数组数据
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", '