Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.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 在reactjs中返回包含更新数组的整个对象_Javascript_Reactjs_Ecmascript 6_Redux_Immutable.js - Fatal编程技术网

Javascript 在reactjs中返回包含更新数组的整个对象

Javascript 在reactjs中返回包含更新数组的整个对象,javascript,reactjs,ecmascript-6,redux,immutable.js,Javascript,Reactjs,Ecmascript 6,Redux,Immutable.js,我在显示包含更新的features数组的features对象时遇到问题。对于未接触/未删除的零件,其工作正常,但我删除的特征仅返回特征 数组,而不是显示包含要素数组的整个对象。我的意思是,如果我有这样一个物体 0: Object feature_description: "Room Amenities" feature_type: "roomamenities" features:Array(6) _id:"59395255455a5b043c764a29" 1:Object feature_

我在显示包含更新的features数组的features对象时遇到问题。对于未接触/未删除的零件,其工作正常,但我删除的特征仅返回特征 数组,而不是显示包含要素数组的整个对象。我的意思是,如果我有这样一个物体

0: Object
feature_description: "Room Amenities"
feature_type: "roomamenities"
features:Array(6)
_id:"59395255455a5b043c764a29"

1:Object
feature_name: "Room Amenities"
feature_type: "bathroom"
features:Array(3)
_id:"59395255455a5b043c764a29"
现在,当我删除RoomComforesFeature类型的功能时,我得到了以下结果

0:Object
features: Array(5) # 5 not 6 because one item is deleted 

1:Object
feature_name: "Room Amenities"
feature_type: "bathroom"
features:Array(3)
_id:"59395255455a5b043c764a29"
相反,它应该返回以下对象

0: Object
feature_description: "Room Amenities"
feature_type: "roomamenities"
features:Array(5)
_id:"59395255455a5b043c764a29"

1:Object
feature_name: "Room Amenities"
feature_type: "bathroom"
features:Array(3)
_id:"59395255455a5b043c764a29"
我如何解决我的问题

这是我的减速机代码

case UPDATE_REQUESTED_FEATURES_SUCCESS:
  return state
    .update("features", features =>
      state.get('features').map(feature => {
        console.log("feature", feature);
        if (feature.get("feature_type") === "roomamenities") {
          return {
            ...feature,
            features: feature.get("features").map(subFeature => {
              return subFeature.get("_id") !== action.response.data._id;
            })
          };
        } else {
          return feature;
        }
      })
    );
这是由consoling state.get('features')从reducer生成的features对象的结果


您的
功能
对象是不可变的JS映射。因此,请将其替换为:

  return {
    ...feature,
    features: feature.get("features").map(subFeature => {
      return subFeature.get("_id") !== action.response.data._id;
    })
  };
与:


请您用代码显示数据结构,而不是控制台显示的数据结构,好吗?很抱歉,我不理解您所说的数据结构。在第一部分中,您所说的是对象,但您向我们显示了
0:object[…]1:object[…]
-这似乎是一个数组而不是对象。请向我们展示JS数组或对象格式的数据结构,例如:一个对象可以显示为
{id:“123”,文本:“Test”}
,一个数组可以显示为
[“a1”,“a2”]
@Weedoze,因为我已经提出了我的问题。这将如何删除所选项目?我会尝试一下,并让您知道事实上还有另一件事需要纠正:您的内部
.map
调用应该是
.filter
。我刚刚更新了它。这一个成功了,但是我的代码不成功的原因是因为使用了扩展运算符吗?是的,扩展运算符列出了可枚举属性,而ImmatableJS没有公开它们。
  return feature.set("features", 
      feature.get("features").filter(subFeature => {
          return subFeature.get("_id") !== action.response.data._id;
      })
  );