gpt4 book ai didi

Javascript - 动态转换js包括数组

转载 作者:太空宇宙 更新时间:2023-11-04 02:51:56 24 4
gpt4 key购买 nike

我有一个像这样的json:

var getBody = req.body;

console.log(getBody);

{"tags":[{"tag":"Peter"},{"tag":"Maria"}],"term":"Jack","type":"name"}

我想将其动态转换为:

[ '%Peter%', '%Peter%', '%Maria%', '%Maria%', '%Jack%', 'name' ]        

...所以我需要每个标签值两次(如果可用)。

目前我有这个脚本:

var input = req;
var sqlVal = Object
.entries(input.body)
.reduce(function(result, entry) {
const key = entry[0]
const value = entry[1]
if( key === 'term' ) {
result.push('%' + value + '%')
} else if( key === 'tags' ) {
if ( value.length > 1 ) {
for ( let i=0; i < value.length; i++ ){
result.push('%' + value[i] + '%')
}
} else {
result.push('%' + value + '%')
}
} else if( key === 'type' ) {
if ( value.includes(",") ) {
var array = value.split(",");
for ( let i=0; i < array.length; i++ ){
result.push(array[i])
}
} else {
result.push(value)
}
}
return result
}, [])

...但我得到:

console.log(sqlVal);

[ '%[object Object]%', '%[object Object]%', '%Jack%', 'name' ]

怎样才能得到想要的结果?

期望的结果:

[ '%Peter%', '%Peter%', '%Maria%', '%Maria%', '%Jack%', 'name' ]

...我在 Node.js mysql 查询中使用此脚本

编辑:

我需要它的 SQL 在上面的例子中看起来像这样:

SELECT name, abc from table WHERE (name LIKE ? OR abc LIKE ?) AND (name LIKE ? OR abc LIKE ?) AND (name LIKE ? OR abc LIKE ?) ORDER BY name;    

注意:(name LIKE ? OR abc LIKE ?) 也是动态构建的。

最佳答案

Object.values(req.body)
.flatMap(x => {
switch (Object.prototype.toString.call(x)) {
case '[object String]': return `%${x}%`;
case '[object Array]': return x.map(y => `%${y.tag}%`);
}
});

应该给出所需的输出。请注意,Array.prototype.flatMap 是相当新的,您可能需要进行填充。

关于Javascript - 动态转换js包括数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53545918/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com