Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从键值数组中删除元素?_Javascript_Reactjs_React Redux - Fatal编程技术网

Javascript 如何从键值数组中删除元素?

Javascript 如何从键值数组中删除元素?,javascript,reactjs,react-redux,Javascript,Reactjs,React Redux,我想从数组中删除一个特定的元素,我要从输入中获取元素的键。 我希望只有知道密钥才能删除元素 这是阵列: state ={ splitAmount : [{ "SplitAmount0": this.props.data.amount1 }, { "SplitAmount1": this.props.data.amount2 }, { "SplitAmount2": this.props.data.amount3 }]

我想从数组中删除一个特定的元素,我要从输入中获取元素的键。 我希望只有知道密钥才能删除元素

这是阵列:

state ={
    splitAmount : [{
        "SplitAmount0": this.props.data.amount1
    }, {
        "SplitAmount1": this.props.data.amount2
    }, {
        "SplitAmount2": this.props.data.amount3
    }]
}
删除功能:

  removeSplitAmount(e) {
    console.log("remove",e.target.name)
    let array = [...this.state.splitAmount];
    let  index = this.state.splitAmount.IndexOf(p => p == e.target.name )
    if (index !== -1) {
        array.splice(index, 1);
        this.setState({splitAmount: array});
    }
}

正如Dmitry所说,您不能对对象数组执行indexOf。。。我感到很难过,我没有意识到这一点。 在这种情况下会很有用: 动物变量=[“蚂蚁”、“野牛”、“骆驼”、“鸭子”、“野牛”]

野兽指数(‘野牛’)


在您的情况下,最好使用上述答案中所述的.filter方法,因为您正在搜索具有特定属性的对象

,正如Dmitry所说,您无法对对象数组进行索引。。。我感到很难过,我没有意识到这一点。 在这种情况下会很有用: 动物变量=[“蚂蚁”、“野牛”、“骆驼”、“鸭子”、“野牛”]

野兽指数(‘野牛’)


在您的情况下,您最好使用上述答案中所述的.filter方法,因为您正在搜索具有特定属性的对象

您可以在数组上使用
.filter
方法并结合
对象。键
大量清理函数:

removeSplitAmount(e) {
    const newSplitAmount = this.state.splitAmount
      .filter(p => !Object.keys(p).includes(e.target.name));

    this.setState({ splitAmount: newSplitAmount });
}

您可以在与
对象组合的数组上使用
.filter
方法。键
可以大量清理函数:

removeSplitAmount(e) {
    const newSplitAmount = this.state.splitAmount
      .filter(p => !Object.keys(p).includes(e.target.name));

    this.setState({ splitAmount: newSplitAmount });
}

您可以使用
hasOwnProperty
过滤所需的对象

removeSplitAmount(e) {
  const newSplitAmount = this.state.splitAmount
    .filter(x => !x.hasOwnProperty(e.target.name));

  this.setState({ splitAmount: newSplitAmount });
}

您可以使用
hasOwnProperty
过滤所需的对象

removeSplitAmount(e) {
  const newSplitAmount = this.state.splitAmount
    .filter(x => !x.hasOwnProperty(e.target.name));

  this.setState({ splitAmount: newSplitAmount });
}

indexOf
的可能重复项的可能重复项不将lmbda作为参数。除非您想在lambda数组中查找lambda的索引。
indexOf
不将lmbda作为参数。除非您想在lambda数组中查找lambda的索引。如果您需要支持像IE11这样的旧浏览器,请确保在“包含”函数中包含polyfill。如果您需要支持像IE11这样的旧浏览器,请确保在“包含”函数中包含polyfill。我认为这是最好的答案,即使“newSplitAmount”变量甚至不是必需的,如果您想要更少的代码,可以删除它。我认为这是最好的答案,尽管“newSplitAmount”变量甚至不是必需的,如果您想要更少的代码,可以删除它