javascript - 如何用 json 标签的值替换输入数组中的字段?

标签 javascript

我有一个 json 变量,其中包含标签和相应的值。 标签是我的类别名称,值是我的类别 ID。

var src = {
"categories": [{
    "label": "travel",
    "value": "1"
}, {
    "label": "food",
    "value": "2"
}, {
    "label": "banking",
    "value": "3"
}, {
    "label": "movies",
    "value": "4"
}
]};

我想要一个函数,用上面 json 源中的值替换输入数组中的名称字段。

这是我的输入:

data=[
{'id': 0, 'name': 'banking', 'catvalue': 18}, 
{'id': 1, 'name': 'travel', 'catvalue': 12}, 
{'id': 2, 'name': 'movies', 'catvalue': 33}, 
{'id': 3, 'name': 'food', 'catvalue': 45}
];

修改后,输出应返回为

[
{'id': 0, 'name': '3', 'catvalue': 18}, 
{'id': 1, 'name': '1', 'catvalue': 12}, 
{'id': 2, 'name': '4', 'catvalue': 33}, 
{'id': 3, 'name': '2', 'catvalue': 45}
]

请注意,名称值将替换为 json 中根据标签(名称)提供的值。 [json中的标签==输入数组中的名称]

我尝试使用替换函数,但在循环中实现它遇到困难。

您能否分享实现此要求的任何方法?

这是我尝试过的-

var d1 = [];

Object.keys(data).forEach(function(key) {
  var nm = data[key].name;
  if (nm == src.Categories.label) {
    data[name] = src.Categories.value;
  }
  d1.push(data[key]);

});

我错过了什么?

还尝试使用替换函数将数组中的名称替换为 json 源变量的标签值。但无法弄清楚缺少什么。

最佳答案

您可以使用.filter() method根据数据名称查找对应的源值:

data.forEach(function(el) {
  var match = src.categories.filter(function(obj) {return obj.label === el.name;}),
      value = match[0] && match[0].value;

  el.name = value || 'NOT_FOUND';
});

参见示例:

var src = {
  "categories": [{
    "label": "travel",
    "value": "1"
  }, {
    "label": "food",
    "value": "2"
  }, {
    "label": "banking",
    "value": "3"
  }, {
    "label": "movies",
    "value": "4"
  }]
};
var data = [{
  'id': 0,
  'name': 'banking',
  'catvalue': 18
}, {
  'id': 1,
  'name': 'travel',
  'catvalue': 12
}, {
  'id': 2,
  'name': 'movies',
  'catvalue': 33
}, {
  'id': 3,
  'name': 'food',
  'catvalue': 45
}, {
  'id': 4,
  'name': 'notInArray',
  'catvalue': 48
}];

data.forEach(function(el) {
  var match = src.categories.filter(function(obj) {return obj.label === el.name;}),
      value = match[0] && match[0].value;
  
  el.name = value || 'NOT_FOUND';
});

document.querySelector('pre').textContent = JSON.stringify(data, null, 4);
<pre></pre>

关于javascript - 如何用 json 标签的值替换输入数组中的字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34121973/

相关文章:

javascript - 在 javascript 对象中对重复键执行操作

javascript - 如何创建一个不会破坏附加到模板的事件的 JavaScript 模板引擎?

javascript - 如何读取不同路径的cookie

javascript - 尝试在 Sequelize 中排序但出现错误 "Unable to find a valid association for model"

javascript - 奇怪的 Firefox SWFObject 显示问题

Javascript,如何读取本地文件?

javascript - Angular - 从 JavaScript 重定向到路由

javascript - 使用 js 自动调整网格列的大小

javascript - 需要时导入react组件

javascript - 使用 Bootstrap 3 和 Bootstrap 2