JavaScript 数据操作技巧:实现特定条件的数据筛选与合并?

作者站长头像
站长
· 阅读数 6

处理数据,用js把

[
    {
        "content": "你好\n",
        "role": "user"
    },
    {
        "role": "assistant",
        "content": "你好!很高兴为你服务。有什么问题或需要帮助吗?请随时告诉我。",
        "flag": "2"
    },
    {
        "role": "assistant",
        "content": "你好,很高兴见到你!我是AI优化助手,有什么可以帮助你的吗?\n\n如果你需要优化你的AI提示词,请告诉我你当前面临的具体问题或需求,我会尽力为你提供帮助。",
        "flag": "3"
    },
    {
        "role": "assistant",
        "content": "很高兴为您服务!如果您有任何问题或需要帮助,请随时告诉我。。",
        "flag": "4"
    },
    {
        "role": "assistant",
        "content": "你好!很高兴为你服务。有什么我可以帮助你的吗?",
        "flag": "1"
    },
    {
        "content": "你是谁\n",
        "role": "user"
    },
    {
        "role": "assistant",
        "content": "我是",
        "flag": "2"
    },
    {
        "role": "assistant",
        "content": "你好,我是你的AI优化助手。"
        "flag": "3"
    },
    {
        "role": "assistant",
        "content": "我是您的人工智能优化助手,专门致力于帮助用户优化与AI大模型的交互体验。",
        "flag": "4"
    },
    {
        "role": "assistant",
        "content": "作为一个认知智能模型,我的目标是为您提供有关各种主题的有用信息和建议",
        "flag": "1"
    }
]

{
    "name": "question",
    "text": "你好\n"
}

最终返回

[
    {
        "role": "assistant",
        "content": "你好!很高兴为你服务。有什么问题或需要帮助吗?请随时告诉我。",
        "flag": "2"
    },
    {
        "role": "assistant",
        "content": "你好,很高兴见到你!我是AI优化助手,有什么可以帮助你的吗?\n\n如果你需要优化你的AI提示词,请告诉我你当前面临的具体问题或需求,我会尽力为你提供帮助。",
        "flag": "3"
    },
    {
        "role": "assistant",
        "content": "很高兴为您服务!如果您有任何问题或需要帮助,请随时告诉我。。",
        "flag": "4"
    },
    {
        "role": "assistant",
        "content": "你好!很高兴为你服务。有什么我可以帮助你的吗?",
        "flag": "1"
    }]

网络

回复
1个回答
avatar
test
2024-06-19

问题描述不够清楚,你是想通过“问题” 在所有会话历史中找到该问题对应的所有回答。

var question = {
    "name": "question",
    "text": "你好\n"
};


function lookupChatByQuestion(question, chatHistory) {
    var retArr;
    for(var i = 0; i<chatHistory.length; i++) {
        var currentChatObj = chatHistory[i];
        if((!retArr) && currentChatObj.role == "user" && currentChatObj.content == question.text) {
            retArr = [];
            continue;
        }
        retArr && currentChatObj.role == "assistant" && retArr.push(currentChatObj);

        if(retArr && currentChatObj.role == "user") {
            break;
        }
    }
    return retArr ?? [];
}

console.log(lookupChatByQuestion(question, chatHistory));
回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容