我有一组JSON对象的特定格式。格式如下:
[{
"key": ["key1"],
"value": ["value1", "value2", "value3"]
}, {
"key": ["key2", "key3"],
"value": ["value4", "value5", "value6"]
}]
我正在使用简单的JavaScript(没有jQuery)编写一个函数,它将根据用户输入是否与键值匹配而将值附加到.value元素。例如,我输入key2,逻辑将与键2匹配,并附加" value7"到该键的value元素的末尾,产生以下结果:
[{
"key": ["key1"],
"value": ["value1", "value2", "value3"]
}, {
"key": ["key2", "key3"],
"value": ["value4", "value5", "value6", "value7"]
}]
目前,JSON只是JS文件中的一个对象,使用JSON.parse(" string")进行解析。我需要执行追加,然后使用Stringify重建JSON。 (假设这将是我的逻辑)。我只需要附加帮助,因为我对这种情况下的逻辑感到困惑。如果有人可以把一个关于JS的外观的快速示例放在一起,那将是一个巨大的帮助。谢谢!
答案 0 :(得分:2)
您不是以对象为目标,然后是包含该数组的属性,并推送到该数组
var array = [{
"key": ["key1"],
"value": ["value1", "value2", "value3"]
}, {
"key": ["key2", "key3"],
"value": ["value4", "value5", "value6"]
}];
array[1].value.push('value7');
console.log(array);
答案 1 :(得分:0)
检查此代码段
var arr = [{
"key": ["key1"],
"value": ["value1", "value2", "value3"]
}, {
"key": ["key2", "key3"],
"value": ["value4", "value5", "value6"]
}]
console.log(insertAtKey(arr, 2, "value7"));
function insertAtKey(arr, index, str) {
var obj = arr[index - 1];
Object.keys(obj).forEach(function(key, val) {
if (key === "value") {
obj[key].push(str);
}
});
arr[index - 1] = obj;
return arr;
}
希望有所帮助
答案 2 :(得分:0)
这个问题听起来像是我的作业,我不想破坏整个解决方案,但你可以使用过滤器在对象数组中进行搜索,为你添加其他难题的值:
var data = [{
"key": ["key1"],
"value": ["value1", "value2", "value3"]
}, {
"key": ["key2", "key3"],
"value": ["value4", "value5", "value6"]
}];
function hasKey(k) {
return data.filter(e => { return e['key'].includes(k); });
}
console.log("for key1:" + hasKey("key1")[0].value);
console.log("for key2:" + hasKey("key2")[0].value);
console.log("for key3:" + hasKey("key3")[0].value);
filter做了什么:
e => { return e['key'].includes(k); }
如果e
数组中的当前对象data
在k
属性中包含值key
,则传递该值。