使用支持 IE8 的 JavaScript 中的值从数组中删除一个元素 [重复]

Posted

技术标签:

【中文标题】使用支持 IE8 的 JavaScript 中的值从数组中删除一个元素 [重复]【英文标题】:Delete an element from an array using its value in javaScript which supports IE8 [duplicate] 【发布时间】:2015-07-18 16:03:19 【问题描述】:

我想使用它的值而不是在 IE8 上工作的索引从数组中删除一项。任何帮助将不胜感激。谢谢。

这是我的数组:

var myArray = ['one', 'two', 'three'];

结果应该是这样的:

删除操作:

myArray.splice('three');

结果:

myArray =['one', 'two'];

我试过了,但它在 IE8 中不起作用。

angular.forEach($scope.leftList, function (leftItems) 
    var arrlen = $scope.rightList.length;
    for (var j = 0; j<arrlen; j++) 
        if (leftItems == $scope.rightList[j]) 
            $scope.rightList = $scope.rightList.slice(0, j).concat($scope.rightList.slice(j+1, arrlen));
        
    
);

【问题讨论】:

如果'three' 出现多次怎么办? 你在数组中有什么样的值,只有单词?每个项目一个字? "我想..." - 但是您没有显示任何代码表明您已经开始这样做了;你走了多远?你在哪里卡住了? 是的,只有单词,但每个项目可以包含多个单词。 @大卫。我添加了有问题的代码。它在 IE8 中不起作用 【参考方案1】:

您可以使用splitjoin 方法,并且在适当的时候还包括一些正则表达式替换:

var myArray = ['one item', 'two', 'three', 'two', 'two', 'two', 'two', 'fourth item'];
function clearFromArray(item, array) 
	var re1 = new RegExp(item,"g");
	var re2 = new RegExp('(##)+',"g");
	return array.join('##').replace(re1, '').replace(re2, '##').split('##');
;
document.getElementById('result').innerhtml = clearFromArray('two', myArray);
&lt;div id="result"&gt;&lt;/div&gt;

同样在Fiddle。

【讨论】:

以上是关于使用支持 IE8 的 JavaScript 中的值从数组中删除一个元素 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

我如何使用 javascript 在 IE7、IE8、Safari 和其他支持的浏览器中播放 .Wav 声音

JavaScript——数组的indexOf()方法在IE8中的兼容性问题

尝试使用javascript添加样式标签(IE8中的innerHTML)

JavaScript Object.keys()方法替代与IE8的兼容性

IE8兼容模式 - document.documentMode [关闭]

关于 href="javascript:;" 在IE8中的问题