Javascript 数组对象值删除不需要的字符串

Javascript 数组对象值删除不需要的字符串,javascript,arrays,Javascript,Arrays,我有以下originaldata,我想从其中的每个对象中删除div标记,将其与标记中的内容一起作为最终结果,请参见modifieddata 使用javascript的最佳方法是什么?过滤和映射?或者别的什么 originaldata = [{ "name": "john", "content": "<div class="ExternalClass06EE5E42165840F48DFA193ACAD4F87A">aa</div>"

我有以下
originaldata
,我想从其中的每个对象中删除div标记,将其与标记中的内容一起作为最终结果,请参见
modifieddata

使用javascript的最佳方法是什么?过滤和映射?或者别的什么

originaldata = [{
        "name": "john",
        "content": "<div class="ExternalClass06EE5E42165840F48DFA193ACAD4F87A">aa</div>"
    },
    {
        "name": "mary",
        "content": "<div class="ExternalClass3D5F8061F3DE49C4BC55A9CE0ADD6F9A">asd</div>"
    }
]

modifieddata = [{
        "name": "john",
        "content": "aa"
    },
    {
      "name": "mary",
      "content": "asd"
    }
]
原始数据=[{
“姓名”:“约翰”,
“内容”:“aa”
},
{
“姓名”:“玛丽”,
“内容”:“asd”
}
]
修改数据=[{
“姓名”:“约翰”,
“内容”:“aa”
},
{
“姓名”:“玛丽”,
“内容”:“asd”
}
]
使用javascript的最佳方法是什么?过滤和映射?或者别的什么

originaldata = [{
        "name": "john",
        "content": "<div class="ExternalClass06EE5E42165840F48DFA193ACAD4F87A">aa</div>"
    },
    {
        "name": "mary",
        "content": "<div class="ExternalClass3D5F8061F3DE49C4BC55A9CE0ADD6F9A">asd</div>"
    }
]

modifieddata = [{
        "name": "john",
        "content": "aa"
    },
    {
      "name": "mary",
      "content": "asd"
    }
]
如果您想采用功能性方法,只需
map
(复制对象),就不需要过滤

如果没有,只需修改现有对象即可:

以下是
地图
版本:

var originaldata=[{
“姓名”:“约翰”,
“内容”:“aa”
},
{
“姓名”:“玛丽”,
“内容”:“asd”
}];
var temp=document.createElement(“div”);
var modifieddata=originaldata.map(条目=>{
temp.innerHTML=entry.content;
返回{
name:entry.name,
内容:temp.firstChild.firstChild.nodeValue
};
});

console.log(modifieddata)首先,必须解决引号问题,不能在同一字符串中多次使用双引号:

"<div class="ExternalClass06EE5E42165840F48DFA193ACAD4F87A">aa</div>"
^___________^_____________________________________________^_________^
var originaldata=[{
“姓名”:“约翰”,
“内容”:“aa”
},
{
“姓名”:“玛丽”,
“内容”:“asd”
}
];
对于(原始数据中的var i){
var temp_div=document.createElement('div');
temp_div.innerHTML=原始数据[i]。内容;
原始数据[i].content=temp_div.textContent;
}

控制台日志(原始数据)使用
map
createElement

var output = originaldata.map( function(item){
  var div = document.createElement("div");
  div.innerHTML = item.content;
  return { name : item.name, content : div.textContent }; 
});
var originaldata=[{
“姓名”:“约翰”,
“内容”:“aa”
},
{
“姓名”:“玛丽”,
“内容”:“asd”
}];
var输出=originaldata.map(函数(项){
var div=document.createElement(“div”);
div.innerHTML=item.content;
返回{name:item.name,content:div.textContent};
});
控制台日志(输出)我将使用和regexp:

const originaldata = [{
  "name": "john",
  "content": '<div class="ExternalClass06EE5E42165840F48DFA193ACAD4F87A">aa</div>'
},
{
  "name": "mary",
  "content": '<div class="ExternalClass3D5F8061F3DE49C4BC55A9CE0ADD6F9A">asd</div>'
}];

const regex = /(<([^>]+)>)/ig;

const modifieddata = originaldata.map(item => ({ 
  name: item.name,
  content: item.content.replace(regex, "")
}));

console.log(modifieddata); // [{name: "john", content: "aa"}, {name: "mary", content: "asd"}]
const originaldata=[{
“姓名”:“约翰”,
“内容”:“aa”
},
{
“姓名”:“玛丽”,
“内容”:“asd”
}];
常量正则表达式=/(]+)>)/ig;
常量modifieddata=originaldata.map(项=>({
名称:item.name,
内容:item.content.replace(regex,“”)
}));
console.log(modifieddata);//[{姓名:“约翰”,内容:“aa”},{姓名:“玛丽”,内容:“asd”}]
UPD。如果内容的结构可能比一个标记包装更复杂,那么您应该考虑使用另一种方法(例如和)。

您可以创建一个新元素,然后将
originaldata
数组的内容插入到新创建的元素中

稍后,使用
innerHTML
检索元素的html,并使用
innerHTML

工作演示

var originaldata=[{
“姓名”:“约翰”,
“内容”:“aa”
},
{
“姓名”:“玛丽”,
“内容”:“asd”
}
];
对于(原始数据中的var i){
var html=originaldata[i]。内容;
var temp=document.createElement('div');
temp.innerHTML=html;
var htmlContent=temp.firstChild.innerHTML;
原始数据[i]。内容=htmlContent;
}
console.log(originaldata)
这里有一行代码(假设div标记中只有字母)


originaldata.forEach(x=>{x.content=x.content.match(/>)(\w+?)(\w+?)格式中有错误。字符串应为
'aa'
或“aa”@gurvinder372:反正不是JSON。但是,是的,它仍然无效。@T.J.Crowder你是说接受的答案不正确?还是不是解决问题的正确方法?@DamienFlood:这是使用正则表达式解析HTML,这不是一个好主意。如果你想采用函数方法(创建新对象),剩下的部分就可以了@T.J.Crowder如果DIV中有其他HTML标记,这也会被删除。理想情况下,我想保留DIV中的所有内容,即使它有其他标记。这也是可能的吗?非常确定他们不想要
内容
中的
“0”和
“1”
(他们说他们想要
“aa”
“asd”
)“没有任何意义&也只是用作示例”这将是一个非常具体的“无意义的示例”,他想删除
标记并提取它们的文本(存储在
内容
)。您的答案中缺少该步骤。-)我在需求中没有看到任何HTML))PS喜欢那篇文章!你在回答中使用正则表达式来解析HTML。强烈建议不要这样做。@T.J.Crowder那么你将遵循什么方法?如果是单标记包装,我想这是合适的解决方案。但我同意,一般来说,这个过程应该是另一个。我更新了答案。当你e A)不从回调返回任何内容,B)不使用返回值。当然,。你是对的。我不应该使用map。将其更改为forEach。A)这不是一个纯函数。我在这里没有遵循函数方法。那么为什么我是否从函数返回一些内容很重要?使用时很重要
map
。现在不使用
map
,这无关紧要。HTML问题仍然存在,而且这个答案实际上只是在任何情况下重复以前的答案。
const originaldata = [{
  "name": "john",
  "content": '<div class="ExternalClass06EE5E42165840F48DFA193ACAD4F87A">aa</div>'
},
{
  "name": "mary",
  "content": '<div class="ExternalClass3D5F8061F3DE49C4BC55A9CE0ADD6F9A">asd</div>'
}];

const regex = /(<([^>]+)>)/ig;

const modifieddata = originaldata.map(item => ({ 
  name: item.name,
  content: item.content.replace(regex, "")
}));

console.log(modifieddata); // [{name: "john", content: "aa"}, {name: "mary", content: "asd"}]
originaldata.forEach( x => { x.content = x.content.match(/>(\w+?)</)[1] })