Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/455.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 - Fatal编程技术网

Javascript 将对象数组中的所有状态替换为(查找和筛选)不起作用

Javascript 将对象数组中的所有状态替换为(查找和筛选)不起作用,javascript,Javascript,我有个问题。我正在尝试用挂起状态替换对象数组中出现的任何订阅状态 首先,我尝试了。查找,但这只改变了第一个元素。所以我对某某做了一些研究,发现了这一点。在第一次发生后找到止损点。问题的解决方案是。过滤器,但不知何故它仍然不起作用: 设subscribedChannels=[]; 订阅频道{ 姓名:ABC, 状态:已订阅 } ; 订阅频道{ 姓名:DEF,, 状态:已订阅 } ; 订阅频道{ 姓名:GHI, 状态:已订阅 } ; console.logsubscribedChannels; su

我有个问题。我正在尝试用挂起状态替换对象数组中出现的任何订阅状态

首先,我尝试了。查找,但这只改变了第一个元素。所以我对某某做了一些研究,发现了这一点。在第一次发生后找到止损点。问题的解决方案是。过滤器,但不知何故它仍然不起作用:

设subscribedChannels=[]; 订阅频道{ 姓名:ABC, 状态:已订阅 } ; 订阅频道{ 姓名:DEF,, 状态:已订阅 } ; 订阅频道{ 姓名:GHI, 状态:已订阅 } ; console.logsubscribedChannels; subscribedChannels.find channel=>channel.status==subscribed.status=pending//不工作,因为在第一个元素之后停止 console.logsubscribedChannels; subscribedChannels.filter channel=>channel.status==subscribed.status=pending//也不工作,但不知道为什么 console.logsubscribedChannels 您想访问每个,所以请使用forEach

我不认为filter和map在语义上是正确的,即使它们可以工作——第一个是返回一个子集,另一个是返回一个新数组

const subscribedChannels=[ {名称:ABC,状态:已订阅}, {name:DEF,status:done}, {名称:GHI,状态:已订阅} ]; console.logJSON.stringifysubscribedChannels; subscribedChannels.forEachchannel=>{ 如果channel.status==订阅的channel.status=挂起 }; //没有括号 //subscribedChannels.forEachc=>c.status=c.status===subscribed?待定:c.状态; console.logJSON.stringifysubscribedChannels 您想访问每个,所以请使用forEach

我不认为filter和map在语义上是正确的,即使它们可以工作——第一个是返回一个子集,另一个是返回一个新数组

const subscribedChannels=[ {名称:ABC,状态:已订阅}, {name:DEF,status:done}, {名称:GHI,状态:已订阅} ]; console.logJSON.stringifysubscribedChannels; subscribedChannels.forEachchannel=>{ 如果channel.status==订阅的channel.status=挂起 }; //没有括号 //subscribedChannels.forEachc=>c.status=c.status===subscribed?待定:c.状态;
console.logJSON.stringifysubscribedChannels 您可以运行以下操作:

const subscribedChannels=[ {名称:ABC,状态:已订阅}, {name:DEF,status:done}, {名称:GHI,状态:已订阅} ]; console.logsubscribedChannels.mapc=>{ c、 状态=c。状态=已订阅? 悬而未决的: c、 状态;返回c; }.filterc=>c.status==done
您可以运行以下操作:

const subscribedChannels=[ {名称:ABC,状态:已订阅}, {name:DEF,status:done}, {名称:GHI,状态:已订阅} ]; console.logsubscribedChannels.mapc=>{ c、 状态=c。状态=已订阅? 悬而未决的: c、 状态;返回c; }.filterc=>c.status==done
为什么不改用地图呢

const pendingChannels = subscribedChannels.map(channel => {
  if(channel.status === "subscribed") {
    channel.status = "pending"
  }

  return channel
})

为什么不改用地图呢

const pendingChannels = subscribedChannels.map(channel => {
  if(channel.status === "subscribed") {
    channel.status = "pending"
  }

  return channel
})


在这里使用地图。arr.mapa=>{conditionHere,a中的changeData;返回a;}。在此处使用map。arr.mapa=>{conditionHere,a中的changeData;返回a;}。我不想创建新数组。我只想更新旧的。那么,只需使用subscribedChannels=subscribedChannels.map。。。这就是为什么我不想创建一个新的数组。我只想更新旧的。那么,只需使用subscribedChannels=subscribedChannels.map。。。相反,这就是为什么forEach为此而疯狂!也有短的功能样式吗?你想要短多少?只是开玩笑而已。太完美了。非常感谢。我会在6分钟内接受答案。订阅频道。forEachc=>c.status=c.status===subscribed?待定:c.状态;谢谢你!也有短的功能样式吗?你想要短多少?只是开玩笑而已。太完美了。非常感谢。我会在6分钟内接受答案。订阅频道。forEachc=>c.status=c.status===subscribed?待定:c.状态;为什么是地图?为什么不呢?这更有意义,因为我们不需要新的阵列。不管怎么说,你的答案和我的答案是一样的,我想它更具功能性,而且因为forEach返回未定义的,它是不可链接的。好吧,根据函数编程的定义,你希望避免副作用和可变数据,我想因为它使用JS,它不是性能关键,所以创建新数组应该是便宜的。嗯,我明白这一点。但是我不能相信创建一个新的数组是没有成本的——我也喜欢ITO的语义——当然,这是有成本的,就像任何人可以编写的代码一样。我要说的是,在这个特殊的案例中,我们在这个问题上的背景主要归结为个人偏好。为什么要映射?为什么不呢?这更有意义,因为我们不需要新的阵列。不管怎么说,你的答案和我的完全一样,我想它更实用,因为
rEach返回未定义的,它是不可链接的。根据函数式编程的定义,您希望避免副作用和可变数据,并且我假设由于它使用JS,所以它的性能不重要,因此创建新数组应该是便宜的。嗯,我明白了链接性的意义。但是我不能相信创建一个新的数组是没有成本的——我也喜欢ITO的语义——当然,这是有成本的,就像任何人可以编写的代码一样。我要说的是,在这个特殊的案例中,我们在这个问题上的背景主要归结为个人偏好。