Javascript 使用for循环减少相似值
我有一个简单的JavaScript代码,我编写该代码是为了减少2个数组中的类似值,代码本身工作得非常完美: Javascript代码:Javascript 使用for循环减少相似值,javascript,arrays,loops,react-native,Javascript,Arrays,Loops,React Native,我有一个简单的JavaScript代码,我编写该代码是为了减少2个数组中的类似值,代码本身工作得非常完美: Javascript代码: var Array2 = [ "1", "2", "3", "4", "5" ]; var Array1 = ["1","2","3"]; var result = Array2.filter(val => !Array1.includes(val)); //var result = []; for(var i =
var Array2 = [ "1", "2", "3", "4", "5" ];
var Array1 = ["1","2","3"];
var result = Array2.filter(val => !Array1.includes(val));
//var result = [];
for(var i = 0; i < Array1.length ; i++){
var x = Array1[i];
var check = false;
for( var y = 0; y < Array2.length; y++){
if(x == Array2[y]){
check = true;
}
}
if(!check){
result.push(x);
}
}
console.log(result);
我的渲染:
renderLoader(){
{
this.state.photos.map((p,i)=>{
console.log('this.state.photos',this.state.photos)
返回(
);
})
}
{
this.state.decoyPhotos.map((p,i)=>{
console.log('this.state.decoyPhotos',this.state.decoyPhotos)
返回(
);
})
}
{
this.state.photos.map((p,i)=>{
console.log('this.state.photos',this.state.photos)
返回(
);
})
}
完整代码:
1.
2.SelectedPhoto.js:在胖箭头函数中使用
this
绝对不是一件好事。如果您使用onSelectPhoto=function(photo,callback){
而不是onSelectPhoto=(photo,callback)=>{
onSelectPhoto = (photo, callback) => {
let photos = new Set([...this.selectedDecoy]);
let len = this.selectedPhotosIndex;
let decoyPhotos = this.state.decoyPhotos;
//let result = decoyPhotos.filter(val =>
!photos.includes(val));
for(var i = 0; i < photos.length ; i++){
var x = photos[i];
var check = false;
for( var y = 0; y < decoyPhotos.length; y++){
if(x == decoyPhotos[y]){
check = true;
}
}
if(!check){
result.push(x);
console.log('photos',photos);
}
if (len > this.state.supportLength - 1) {
this.limitDialog.open();
}
else if (len === (this.state.supportLength - 1)) {
photos.add(photo);
this.selectedDecoy = Array.from(photos);
this.selectedPhotosIndex = this.selectedPhotosIndex + 1;
callback(true);
}
else {
this.selectedPhotosIndex = this.selectedPhotosIndex + 1;
photos.add(photo);
this.selectedDecoy = Array.from(photos);
callback(true);
}
//else {
// photos.add(photo);
// this.setState({selectedDecoy: Array.from(photos)});
// this.props.setSelectedPhotos(len);
//}
}
}
constructor(props) {
super(props);
this.selectedDecoy=[];
this.selectedPhotos = [];
this.selectedPhotosIndex = 0;
let photos = this.getSelectedPhotos();
this.state = {
decoyPhotos: [],
photos: photos,
loader: {
loading: 1,
message: "Loading photos..."
},
supportLength: photos.length,
selectedDecoy: [],
step: 0,
progress: new Animated.Value(0),
animationRunning: false
};
this.props.navigation.setParams({notificationAction: this.onNotification, isIncome: this.props.isNewNotifications});
}
{
this.state.photos.map((p, i) => {
console.log('this.state.photos.', this.state.photos)
return (
<SelectedPhoto
key={i}
index={i}
style={{
width: photoWidth,
height: photoWidth,
}}
limit={this.state.supportLength}
photo={p}
onSelectPhoto={this.onSelectPhoto}
onDeselectPhoto={this.onDeselectPhoto}
/>
);
})
}
{
this.state.decoyPhotos.map((p, i) => {
console.log('this.state.decoyPhotos', this.state.decoyPhotos)
return (
<SelectedPhoto
key={i}
index={i}
style={{
width: photoWidth,
height: photoWidth,
}}
limit={this.state.supportLength}
photo={p}
onSelectPhoto={this.onSelectPhoto}
onDeselectPhoto={this.onDeselectPhoto}
/>
);
})
}
{
this.state.photos.map((p, i) => {
console.log('this.state.photos.', this.state.photos)
return (
<SelectedPhoto
key={i}
index={i}
style={{
width: photoWidth,
height: photoWidth,
}}
limit={this.state.supportLength}
photo={p}
/>
);
})
}