javascript - 从嵌套的 forEach 循环中的最后一个结果中删除逗号

标签 javascript arrays foreach javascript-objects nested-loops

我正在尝试返回以下值以插入到 SQL 语句中:

('apple', 'fruit', 'john@gmail.com'), ('carrot', 'vegetables', 'john@gmail.com'), ('beans', 'vegetables', 'john@gmail.com'), ('milk', 'dairy', 'john@gmail.com'), ('cheese', 'dairy', 'john@gmail.com')

这是我必须处理的数据:

const email = "john@gmail.com";
const body = {
        "fruit": ["apple"],
        "vegetables": ["carrot", "beans"],
        "dairy": ["milk", "cheese"]
}; 

这是我到目前为止尝试过的:

let values = '';

Object.keys(body).forEach(key => {
  Object.keys(body[key]).forEach(item => {
    values += `('${body[key][item]}', '${key}', '${email}'),`;
  });
});

这会返回正确的值,但最后一个结果的末尾有一个逗号,这会在插入到 SQL 中时导致错误。

有什么想法可以重写此函数以从上次迭代中删除逗号吗?也许我应该尝试不同的循环,比如 for(),而不是 forEach?

谢谢:)

最佳答案

您可以使用 slice() 函数删除字符串的最后一个字符。

const email = "john@gmail.com";
const body = {
        "fruit": ["apple"],
        "vegetables": ["carrot", "beans"],
        "dairy": ["milk", "cheese"]
}; 
let values = '';
Object.keys(body).forEach(key => {
  Object.keys(body[key]).forEach(item => {
    values += `('${body[key][item]}', '${key}', '${email}'),`;
  });
});
values = values.slice(0,-1)

console.log(values)

更好的方法是首先使用 flatMap() 获取平面字符串数组,然后使用 join()

const email = "john@gmail.com";
const body = {
        "fruit": ["apple"],
        "vegetables": ["carrot", "beans"],
        "dairy": ["milk", "cheese"]
}; 
let values = Object.entries(body)
                      .flatMap(([k,v]) => v.map(a => `('${v}', '${k}', '${email}')`))
                      .join(',')
console.log(values)

关于javascript - 从嵌套的 forEach 循环中的最后一个结果中删除逗号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56051265/

相关文章:

javascript - 使用 Express.js/Node.js 的电子邮件管道

javascript - 单击链接时关闭菜单

javascript - 就我而言,如何在运行时加载 JS 文件?

javascript - 输入日期在 safari 上不起作用

php - 推送数组数据

java - 在 for 循环中, (int i : tall) do, 其中 tall 是一个 int 数组

java - 适配器中的数组大小为 0 > MainActivity 中的数组大小为 0?

javascript - 如何引用在 javascript for 语句中定义的对象?

algorithm - 设置值使用逻辑

javascript - 将多维对象数组转换为单维对象数组 Javascript