将字符串追加到JS

时间:2016-11-17 23:01:09

标签: javascript json

我有一组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的外观的快速示例放在一起,那将是一个巨大的帮助。谢谢!

3 个答案:

答案 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数组中的当前对象datak属性中包含值key,则传递该值。