Javascript Array.splice未返回正确的输出
我试图匹配两个数组,如果它们包含相同的值,它将从其中一个数组中删除元素。我尝试使用Javascript Array.splice未返回正确的输出,javascript,arrays,typescript,ionic2,Javascript,Arrays,Typescript,Ionic2,我试图匹配两个数组,如果它们包含相同的值,它将从其中一个数组中删除元素。我尝试使用splice()方法。我试着阅读,但是输出是: new array ["SUGAR"] 然而,我希望实现这一输出: ["HYDROGENATED VEGETABLE↵OIL", "RAPESEED OIL", "PALM OIL", "SUNFLOWER OIL", "RAPESEED OIL", "PALM OIL"] 这是原始数组(unSafe): 这是我的代码: function breakArray()
splice()
方法。我试着阅读,但是输出是:
new array ["SUGAR"]
然而,我希望实现这一输出:
["HYDROGENATED VEGETABLE↵OIL", "RAPESEED OIL", "PALM OIL", "SUNFLOWER OIL", "RAPESEED OIL", "PALM OIL"]
这是原始数组(unSafe
):
这是我的代码:
function breakArray() {
let warning = this.navParams.get("warningResult");
let unSafe = this.navParams.get("unSafeResult");
console.log(unSafe);
console.log(warning);
for (var i = 0; i < warning.length; i++) {
for (var j = 0; j < unSafe.length; j++) {
if (warning[i] === unSafe[j]) {
console.log('warning', i);
console.log('unSafe', j);
unSafe.splice(j, 1);
console.log('new array', unSafe);
}
}
}
}
函数breakArray(){
设warning=this.navParams.get(“warningResult”);
设unSafe=this.navParams.get(“unSafeResult”);
控制台日志(不安全);
控制台日志(警告);
对于(变量i=0;i
使用过滤器
方法而不是拼接
方法。您不想在正在迭代的数组上拼接
let unsaureray=[“糖”,“氢化蔬菜”↵油、菜籽油、棕榈油、葵花籽油、菜籽油、棕榈油];
让warningArray=[“糖”,“葵花籽油];
让filteredArray=未过滤的光线;
warningArray.forEach(函数(warningElement){
filteredArray=filteredArray.filter(函数(UnseeElement)){
返回unsafeElement!==warningElement;
});
});
控制台日志(filteredArray)代码>似乎工作正常。返回不带“warning”元素的数组
函数breakArray(){
//设warning=this.navParams.get(“warningResult”);
//设unSafe=this.navParams.get(“unSafeResult”);
var warning=[“SUGAR”];
var不安全=[“糖”,“氢化蔬菜”↵油、菜籽油、棕榈油、葵花籽油、菜籽油、棕榈油];
//控制台日志(不安全);
//控制台日志(警告);
对于(变量i=0;i breakArray()代码>您需要确保j
为0
//原始数组。
var不安全=[“糖”,“氢化蔬菜”↵油、菜籽油、棕榈油、葵花籽油、菜籽油、棕榈油];
//查找项目的索引。
让removeIndexStart=unsafe.indexOf('SUGAR');
//检查它是否存在。
如果(removeIndexStart>-1){
//返回已删除的项(从索引0中删除1项)
//并就地修改阵列。
移除的var=不安全的拼接(移除索引开始,1);
log('Removed:',JSON.stringify(Removed,null,2));
}
log('Modified:',JSON.stringify(不安全,null,2))代码>
。作为控制台包装器{top:0;最大高度:100%!important;}
如果向后搜索,您始终可以拼接。是的,您可以,但是过滤器稍微简单了一点,它现在正在工作。正如console.log显示的0:“氢化蔬菜↵油“1:“菜籽油”2:“棕榈油”3:“葵花油”4:“菜籽油”5:“棕榈油”谢谢您的帮助
function breakArray() {
let warning = this.navParams.get("warningResult");
let unSafe = this.navParams.get("unSafeResult");
console.log(unSafe);
console.log(warning);
for (var i = 0; i < warning.length; i++) {
for (var j = 0; j < unSafe.length; j++) {
if (warning[i] === unSafe[j]) {
console.log('warning', i);
console.log('unSafe', j);
unSafe.splice(j, 1);
console.log('new array', unSafe);
}
}
}
}