[英]how to add an element inside a json array at the specific index in a repeating block?
I am trying to add element "delete:true" after each occurrence of "_rev " mentioned in the below sample request. 我试图在下面的示例请求中提到的每次出现“ _rev”之后添加元素“ delete:true”。
Original Request: 原始请求:
{
"docs": [
{
"_id": "123",
"_rev": "1-7836",
},
{
"_id": "456",
"_rev": "1-1192",
}
]
}
Expected Request: 预期要求:
{
"docs": [
{
"_id": "123",
"_rev": "1-7836",
"_deleted" :true
},
{
"_id": "456",
"_rev": "1-1192",
"_deleted" :true
}
]
}
When I tried the below code,the ""_deleted" :true" is getting inserted after the -rev element is closed. 当我尝试下面的代码时,在关闭-rev元素后将插入“ _deleted”:true。 PFB for the same and suggest.
PFB为相同,并建议。
function main(params) {
for (var i = 0; i< params.docs.length; i++) {
for (var value in params.docs[i]) {
if(value == '_rev' && params.docs[i]._rev ){
var string1 = JSON.stringify(params.docs[i]);
var str = ',';
var string2 = '"';
var string3 =str+string2+ '_deleted'+ string2+ ':' + "true" ;
var res = string1 + string3 ;
}
}
}
}
######################
[
"2018-01-23T09:44:23.568738362Z stdout:
{\"_id\":\"123\",
\"_rev\":\"1-7836\"},
\"_deleted\":true"]
Use map
and Object.assign
instead of generating a string 使用
map
和Object.assign
而不是生成字符串
var output = params.docs.map( s => Object.assign( {}, {"_deleted" :true}, s ) );
You can then convert this to string using JSON.stringify( output );
然后,您可以使用
JSON.stringify( output );
将其转换为字符串JSON.stringify( output );
Demo 演示版
var params = { "docs": [{ "_id": "123", "_rev": "1-7836", }, { "_id": "456", "_rev": "1-1192", } ] }; var output = params.docs.map(s => Object.assign({}, { "_deleted": true }, s)); console.log(output);
var data = { "docs": [ { "_id": "123", "_rev": "1-7836", }, { "_id": "456", "_rev": "1-1192", } ] } var newData = data['docs'].map(item => { item._delete = true return item }) console.log(newData);
Why don't you simply put ._deleted attribute to doc, like this ? 您为什么不这样简单地将._deleted属性添加到doc呢?
function main(params) {
for (var i = 0; i< params.docs.length; i++) {
params.docs[i]._deleted = true;
var res = JSON.stringify(params.docs[i]);
}
}
}
Or like this : 或者像这样:
function main(params) {
for (var i = 0; i< params.docs.length; i++) {
params.docs[i]["_deleted"] = true;
var res = JSON.stringify(params.docs[i]);
}
}
}
You can reference the not existing attribute directly and assign an value: 您可以直接引用不存在的属性并分配一个值:
#!/usr/bin/js
var myJSON = { "docs": [ { "_id":"123", "_rev":"1-200" } ] }
console.log(myJSON);
myJSON.docs[0]["_deleted"]=true;
console.log(myJSON);
Output of example: 示例输出:
# js append.js
{ docs: [ { _id: '123', _rev: '1-200' } ] }
{ docs: [ { _id: '123', _rev: '1-200', _deleted: true } ] }
Read the more extensive example here: Add new attribute (element) to JSON object using JavaScript 在此处阅读更广泛的示例: 使用JavaScript将新属性(元素)添加到JSON对象
So this might be a duplicate ... 所以这可能是重复的...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.