Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何修改json对象?_Javascript - Fatal编程技术网

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;
        }
    }
}