javascript - 如何使用过滤器返回一个新数组减去已选择的一项?

标签 javascript arrays react-native

我正在使用 Flatlist 来呈现项目列表。在 Componentwillmount 中,我将状态设置为获取结果。

constructor() {
        super();
        this.state = {
            listOfCameras: [],
        };
    }

componentWillMount() {
        apiService.listCameras().then((res) => {
            this.setState({ listOfCameras: res });
        });
    }

我的平面列表如下所示:

createListOfCams() {
    return (
        <FlatList
            data={this.state.listOfCameras}
            renderItem={({ item, index }) => {
                return (
                    this.createSingleCamera(item, index)
                );
            }}
            keyExtractor={(item, index) => index.toString()}
            // extraData={}
        />
    );
}

最后我的 createSingleCamera 看起来像这样:

createSingleCamera(item, index) {
   const modelCam = item.model;
    return (    
        <View style={styles.singleCamLineView}>
            <View style={styles.modelCamNameView}>
                <Text style={styles.singleCameraText}>{modelCam}</Text>
            </View>
            <View style={styles.deleteIconView}>
                <TouchableOpacity
                    onPress={() => {
                        this.deleteCamFromList(item, index);
                    }}
                >
                    <Text style={styles.singleCameraText}> </Text>
                </TouchableOpacity>
            </View>
        </View>
    );
}

我想做的是将要删除的项目的索引传递给deleteCamFromList方法,然后使用它来重新渲染Flatlist。

到目前为止,我的deletefromCamList 看起来像这样:

deleteCamFromList(item, index) {
    let allCamerasBeforeDelete = [...this.state.listOfCameras];
    let newArryOfCams = allCamerasBeforeDelete.filter(index);
}

如何使用过滤器返回一个新数组减去我提供的索引?

最佳答案

赋予 Array.prototype.filter 的第二个参数是项目索引,所以:

deleteCamFromList(item, index) {
    let newArrayOfCams = this.state.listOfCameras.filter((_, i) => i !== index);
    this.setState({listOfCameras: newArrayOfCams})
}

关于javascript - 如何使用过滤器返回一个新数组减去已选择的一项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50561919/

相关文章:

javascript - 使用 bootstrap3 制作侧边栏

arrays - 使用另一个数组的 Swift Realm 对象过滤器数组

javascript - 在索引处连接两个 javascript 数组

javascript - 关于 React-Native 的一些 JavaScript 语法问题

javascript - Rails 应用程序中的本地人问题

javascript - 多个电话号码编辑的逻辑

objective-c - 在 Objective-C 中选择 NSArray 的随机元素

node.js - React-native ListView 数据源不更新

javascript - 如何接待 child 的 child ?

javascript - 将两个选择框值绑定(bind)到单个 knockout 日期属性