Javascript 如何修改json对象?
是否可以从Javascript 如何修改json对象?,javascript,Javascript,是否可以从img标签获取src?我有一个对象,我需要删除图像标记值示例 这是什么输入 [ { "N": "ABC corp", "a": "<img src=\"/img/samples/flag_red.gif\" alt=\"red\" height=\"16\" width=\"16\" border=\"0\"/>", "c": "<img src=\"/img/samples/flag_red.gif\" al
img
标签获取src
?我有一个对象,我需要删除图像标记值示例
这是什么输入
[
{
"N": "ABC corp",
"a": "<img src=\"/img/samples/flag_red.gif\" alt=\"red\" height=\"16\" width=\"16\" border=\"0\"/>",
"c": "<img src=\"/img/samples/flag_red.gif\" alt=\"red\" height=\"16\" width=\"16\" border=\"0\"/>",
"r": "<img src=\"/img/samples/flag_green.gif\" alt=\"green\" height=\"16\" width=\"16\" border=\"0\"/>",
"p": "<img src=\"https://a.na7.visual.force.com/resource/1260007793000/a/iconset/gray.gif\" alt=\" \" height=\"16\" width=\"1\" border=\"0\"/>"
}
]
[
{
"N": "3M",
"a": "red",
"c": "red",
"r": "red",
"p": "gray"
},
{
"N": "ABC corp",
"a": "red",
"c": "red",
"r": "green",
"p": "gray"
}
]
如果给定的输入对象的属性值在
img
标记的src
属性中,如何从该对象创建新对象?我需要检查输入对象属性中img
标记的src属性。如果它是flag_red.gif,则输出对象中的值应该是red。如果为flag_green.gif,则输出对象中的值应为绿色。如果它是gray.gif,则输出对象中的值应为gray以下说明了如何根据图像标记的alt
属性修改数据,为您提供了大致思路。不费吹灰之力,您就可以轻松地修改它,改为使用src
属性进行修改
var data = [{
"N": "3M",
"a": "<img src=\"/img/samples/flag_red.gif\" alt=\"red\" height=\"16\" width=\"16\" border=\"0\"/>",
"c": "<img src=\"/img/samples/flag_red.gif\" alt=\"red\" height=\"16\" width=\"16\" border=\"0\"/>",
"r": "<img src=\"/img/samples/flag_red.gif\" alt=\"red\" height=\"16\" width=\"16\" border=\"0\"/>",
"p": "<img src=\"https://a.na7.visual.force.com/resource/1260007793000/a/iconset/gray.gif\" alt=\" \" height=\"16\" width=\"1\" border=\"0\"/>"
}, {
"N": "ABC corp",
"a": "<img src=\"/img/samples/flag_red.gif\" alt=\"red\" height=\"16\" width=\"16\" border=\"0\"/>",
"c": "<img src=\"/img/samples/flag_red.gif\" alt=\"red\" height=\"16\" width=\"16\" border=\"0\"/>",
"r": "<img src=\"/img/samples/flag_green.gif\" alt=\"green\" height=\"16\" width=\"16\" border=\"0\"/>",
"p": "<img src=\"https://a.na7.visual.force.com/resource/1260007793000/a/iconset/gray.gif\" alt=\" \" height=\"16\" width=\"1\" border=\"0\"/>"
}];
var modified = data.reduce(function (outArr, entry) {
var outObj = {};
for (key in entry) {
if (entry.hasOwnProperty(key)) {
var item = entry[key];
var node = document.createElement("div");
node.innerHTML = item;
var img = node.querySelector("img");
outObj[key] = img ? img.alt : item;
}
}
outArr.push(outObj);
return outArr;
}, []); //[{"N":"3M","a":"red","c":"red","r":"red","p":" "},{"N":"ABC corp","a":"red","c":"red","r":"green","p":" "}]
var数据=[{
“N”:“3M”,
“a”:“,
“c”:“,
“r”:“,
“p”:”
}, {
“N”:“ABC公司”,
“a”:“,
“c”:“,
“r”:“,
“p”:”
}];
var modified=数据减少(函数(输出、输入){
var outObj={};
用于(输入项){
if(条目.hasOwnProperty(键)){
var项目=输入[键];
var节点=document.createElement(“div”);
node.innerHTML=项目;
var img=node.querySelector(“img”);
outObj[key]=img?img.alt:项目;
}
}
外推(outObj);
返航;
}, []); //[{“N”:“3M”,“a”:“红色”,“c”:“红色”,“r”:“红色”,“p”:“},{“N”:“ABC公司”,“a”:“红色”,“c”:“红色”,“r”:“绿色”,“p”:“}]
您只需检查“,
“c”:“,
“r”:”
},
{
“N”:“ABC公司”,
“a”:“,
“c”:“,
“r”:”
}
];
用于(obj中的var k){
for(对象[k]中的名称){
if(obj[k][name].indexOf(“如果我错了,请发表评论!!也许你至少做了一些努力,以免让你的问题看起来像垃圾?当然,你尝试了什么?我当然没有投反对票。但你能分享你的尝试吗!!你没有改进这个问题,但让它更不清楚。而且,投票结果很接近。我给了链接的小提琴,并尝试了它。我可以得到对象的键。但我不能得到一个随机字符串可能也包含的值“他所举的gray.gif示例不适用于此答案。@johncarcenter我知道您没有阅读导致代码的文本。即使使用src
属性,这也不起作用。gray.gif没有“flag” prefix@JohnCarpenter那么,编写一个只提取文件名并删除其中一部分(如果该部分存在)的正则表达式是很简单的:“img/samples/flag\u red.gif”。
var obj=[
{
"N": "3M",
"a": "<img src=\"/img/samples/flag_red.gif\" alt=\"red\" height=\"16\" width=\"16\" border=\"0\"/>",
"c": "<img src=\"/img/samples/flag_red.gif\" alt=\"red\" height=\"16\" width=\"16\" border=\"0\"/>",
"r": "<img src=\"/img/samples/flag_red.gif\" alt=\"red\" height=\"16\" width=\"16\" border=\"0\"/>"
},
{
"N": "ABC corp",
"a": "<img src=\"/img/samples/flag_red.gif\" alt=\"red\" height=\"16\" width=\"16\" border=\"0\"/>",
"c": "<img src=\"/img/samples/flag_red.gif\" alt=\"red\" height=\"16\" width=\"16\" border=\"0\"/>",
"r": "<img src=\"/img/samples/flag_green.gif\" alt=\"green\" height=\"16\" width=\"16\" border=\"0\"/>"
}
];
for(var k in obj){
for (name in obj[k]) {
if(obj[k][name].indexOf("<img") != -1) {
// I have made logic based on "flag_", this can be change as per your requirement.
var src= obj[k][name].substring(obj[k][name].indexOf("flag_")+5,obj[k][name].indexOf(".gif"));
obj[k][name]=src;
}
}
}