您好我需要从另一个数组中删除该数组.Below是我试过的代码
var dummyObj = ["item1"];
var dummyArray = [ "item1", "item3", "item2"];
var data1=removeFromArray(dummyArray, dummyObj);
console.log("data1"+data1)
function removeFromArray(array, item)
{
while((index = array.indexOf(item)) > -1)
array.splice(index,1);
return array
}
下面的是我的输出
item1,item3,item2
但是所需的输出是
item3,item2
不知道我哪里出错了。对此有任何帮助会很有帮助
答案 0 :(得分:0)
您的代码存在的问题是,item
实际上是dummyObj
,它是一个数组,在dummyArray
中不存在。这就是它无法删除它的原因。
您可以使用Array.prototype.filter
,就像这样
dummyArray = dummyArray.filter(function(currentItem) {
return dummyObj.indexOf(currentItem) === -1;
});
console.log(dummyArray); // [ 'item3', 'item2' ]
答案 1 :(得分:0)
查看Underscore.js,一个javascript实用程序带:
答案 2 :(得分:0)
你的错误很少:
while((index = array.indexOf(item)) > -1)
应该是
while((index = array.indexOf(item) > -1)
你还需要遍历dummyArray和dummyObj,因为你的 item 变量实际上是dummyObj,所以你需要遍历它来分别检查每个元素。
答案 3 :(得分:0)
你的参数item是一个数组对象,所以你必须像item [0]
一样使用它 while((index = array.indexOf(item[0])) > -1)
如果dummyObj包含多于一个值,则必须添加一个额外的循环
function removeFromArray(array, item)
{
for(var j=0;j<item.length;j++){
while((index = array.indexOf(item[j])) > -1)
array.splice(index,1);
}
return array
}