gpt4 book ai didi

Javascript - 在多个数组或字符串中拆分并返回数组

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:29:36 25 4
gpt4 key购买 nike

我有一个这样的 json:

{"search":{"updated":"2018-11-07","name":[{"tag":"Peter"}]}}

...然后我动态获取值并创建一个变量:

var existingParams = [
"name",
"updated"].filter(field => getBody.search[field]);

var sqlVal = existingParams.map(field => {
if (field === 'name') {
function getValues(item, index) {
var getVal = [item.tag];
return "%" + getVal + "%";
}
console.log(name.map(getValues));
return name.map(getValues);

} else {
return getBody.search[field];
}
})

对于上面的例子,我得到了 sqlVal:

console.log(sqlVal);         

[ [ '%Peter%' ], '2018-11-07' ]

... 这很好。

但是,如果我有两个值:

{"search":{"updated":"2018-11-07","name":[{"tag":"Peter"},{"tag":"Jack"}]}} 

...我得到这个结构:

[ [ '%Peter%', '%Jack%' ], '2018-11-07' ]   

...但我需要的是:

[ '%Peter%', '%Jack%', '2018-11-07' ]

...或者:

[ ['%Peter%'], ['%Jack%'], '2018-11-07' ]

如果进一步,例如3 个名字:

{"search":{"updated":"2018-11-07","name":[{"tag":"Peter"},{"tag":"Jack"},{"tag":"Maria"}]}} 

...我需要这样的东西:

[ '%Peter%', '%Jack%', '%Maria%', '2018-11-07' ]        

...或者:

[ ['%Peter%'], ['%Jack%'], ['%Maria%'], '2018-11-07' ]

...等等

我需要如何调整上述查询才能得到这个?

最佳答案

如果我正确理解你的问题,那么这个问题可以通过 Array#reduce() 解决。方法。

这种方法的总体思路是将您的输入对象转换为数组 - 可以使用 reduce 操作来执行此操作,并使用“展平”name 上的嵌套值的特殊情况规则。最终结果的关键:

var input = {"search":{"updated":"2018-11-07","name":[{"tag":"Peter"},{"tag":"Jack"}]}}

var result = Object
.entries(input.search)
.reduce(function(result, entry) {

const key = entry[0]
const value = entry[1]

if(key === 'name') {

// When the 'name' key is encountered, handle the value
// differently, by addting the items of this value array
// to the result
value.forEach(function(item) {
result.push('%' + item.tag + '%')
})
}
else {

// Append values for other keys directly to the result
result.push(value)
}

return result

}, [])

console.log(result )

关于Javascript - 在多个数组或字符串中拆分并返回数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53196331/

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