Jquery:将值从一个数组替换为另一个数组

时间:2018-03-13 19:19:50

标签: javascript php arrays foreach

我有两个具有完全相同数量的键的数组。我想遍历第一个数组,然后在<p>标签中搜索任何匹配的值。然后,如果找到匹配,我想用第二个数组中的相应值替换该匹配值。

我现在有这个:

var text_original = ["original_word1", "original_word2", "original_word3"];
var text_replaced = ["replaced_word1","replaced_word2","replaced_word3"];
var z;

for (z = 0; z <= text_original.length; ++z) {
  $("p").each(function(){
    var text=jQuery(this).html();
    $(this).html(text.replace(text_original,text_replaced));
  });
}

这是一般性的想法,我对如何从多个数组值中隔离单个值感到困惑。在此先感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

  • 使用函数indexOf并检查找到的文本。
  • 使用函数text而不是函数html

&#13;
&#13;
var text_original = ["original_word1", "original_word2", "original_word3"];
var text_replaced = ["replaced_word1", "replaced_word2", "replaced_word3"];

$('p').each(function() {
  var text = $(this).text();
  
  var index = text_original.indexOf(text);
  if (index > -1) $(this).text(text.replace(text_original[index], text_replaced[index]));
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p>original_word1</p>
<p>original_word2</p>
<p>Ele from SO</p>
&#13;
&#13;
&#13;

为什么$.text()

  

HTML <p>元素代表一段文字。段落通常在视觉媒体中表示为通过垂直空白空间和/或第一行缩进与相邻块分隔的文本块。段落是块级元素。

函数$.text()将返回没有HTML标记的文本。

答案 1 :(得分:1)

  • 您在echo之前遗失了json_encode()
  • 您的json_encode()不应包含在引号中。
  • 您必须使用[z]来访问数组元素。

代码:

var text_original = <?php echo json_encode($text_original); ?>;
var text_replaced = <?php echo json_encode($text_replaced); ?>;
var z;
for (z = 0; z <= text_original.length; ++z) {
    $("p").each(function(){
        var text=jQuery(this).html();
        $(this).html(text.replace(text_original[z],text_replaced[z]));
    });
}