【问题标题】:iterating Javascript array and delete based on condition迭代 Javascript 数组并根据条件删除
【发布时间】:2022-11-17 22:53:14
【问题描述】:

我想遍历一组单词,查找定义并在未找到定义时删除该单词。

我的代码如下所示;

var words = ["word1", "word2", "word3",]

function Meaning(words){
           const getMeaning = async () => {
  const response = await fetch(`https://api.dictionaryapi.dev/api/v2/entries/en/${words}`)
  const myJson = await response.json()

            for(i = 0; i < words.length; ++i) {
                if(!response[i]){
                    myJson.splice(i,1)
                    console.log(myJson)
                }
            }}

这并没有真正做任何事情。我哪里错了?

编辑以添加上下文

也试过这样;

for(i = 0; i < words.length; ++i)
fetch(`https://api.dictionaryapi.dev/api/v2/entries/en/${words[i]}`).then((response) => {
  if (response === 404) {
    let response = words
    words[i].splice(i,1)
    console.log(response)
  }
  throw new Error('Something went wrong');
})
.then((responseJson) => {
    let response = words
    response[i].splice(i,1)

})
.catch((error) => {
  console.log(error)
});

我可以在找不到定义时打印出 404 错误,但我无法将其从 words 数组中删除

【问题讨论】:

  • splice 将返回一个您不使用的数组。所以 myJson 不会改变。将 myJson.splice(i,1) 更改为 myJson = myJson.splice(i,1)
  • 非常感谢阿里抽出时间来回答,遗憾的是还是一样。
  • @kip,您需要做一些修改。检查此示例 codepen.io/Maniraj_Murugan/pen/qBKPLvV 。但是您的问题还不清楚,您能否详细说明您要达到的目标?
  • 感谢 Maniraj 花时间回答。基本上我想遍历单词列表,获取含义,如果单词没有含义,我想将其从列表中删除。
  • @AliBahrami 那是不正确的。 splice 改变数组,没有必要把它赋值回去

标签: javascript


【解决方案1】:

试试这段代码,你需要从响应中检查数组的每个元素

var words = ["word1", "word2", "word3"];

function Meaning(words) {
    const getMeaning = async () => {
        const response = await fetch(`https://api.dictionaryapi.dev/api/v2/entries/en/${words}`)
        const myJson = await response.json()
        let result = [];
        myJson.forEach(element => {
            if(words.includes(element)) {
                result.push(element)
            }
        });

        return result;
    }
    return getMeaning();
}

【讨论】:

  • 感谢您的建议,但我认为您应该迭代 throw words 而不是 myJson。为什么不直接返回 words.filter(word =&gt; myJson.includes(word)) 而不是执行 forEach 循环
  • 感谢 Build for Dev。可悲的是同样的问题。
猜你喜欢
  • 2013-04-06
  • 2017-07-07
  • 2019-07-08
  • 1970-01-01
  • 1970-01-01
  • 2016-12-25
  • 2021-12-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多