【问题标题】:compare two different arrays in javascript在javascript中比较两个不同的数组
【发布时间】:2018-08-09 04:42:00
【问题描述】:

任何人都可以帮助我在比较相等时比较两个不同的数组以推送值。下面是我的两个(imageslide.therapy),totalValues 数组,我想比较像猫和狗这样的名字。如果条件为真,那么我需要推送他们的图片网址。

var imageslide = {
"therapy": [
    {
        "name": "cats",
        "images": [
            { "url": "cat/firstimg.jpg" },
            { "url": "cat/secondimg.jpg" },
            { "url": "cat/thirdimg.jpg" },
            { "url": "cat/fourthimg.jpg" }
        ]
    },

    {
        "name": "dogs",
        "images": [
            { "url": "dog/firstdog.jpeg" },
            { "url": "dog/seconddog.jpg" },
            { "url": "dog/thirddog.jpg" },
            { "url": "dog/fourthdog.jpg" }
        ]
    },

  ]
}

var totalValues = ["cats","dogs"];

我尝试如下

var imageArray = imageslide.therapy
function compare(imageArray,totalValues ){
    imageArray.forEach((e1)=>totalValues.forEach((e2)=>{

        if(e1.name==e2){
    console.log(e1.name,",",e2)
        }
    })

【问题讨论】:

  • 我不明白你在做什么。如果你能展示你的开始和你想要的最终结果,这可能会有所帮助。
  • 我想比较两个数组。如果猫 == 猫,那么我需要将猫图像 url 推送到一个新数组中。
  • 你的英语很好。这是我无法理解的代码。您 forEach 语句有效(您关闭 )} 并调用该函数。它输出 cats , cats \n dogs , dogs。如果您显示预期的输出,它将有所帮助。
  • 感谢 mark meyer 和 abhishek 的回复。我解决了。

标签: javascript html css


【解决方案1】:

我从您的问题中了解到的就是答案。请原谅我对箭头函数不太了解,所以我用简单的javascript编写了它。

var imageslide = {
    "therapy": [
                    {
                        "name": "cats",
                        "images": [
                            { "url": "cat/firstimg.jpg" },
                            { "url": "cat/secondimg.jpg" },
                            { "url": "cat/thirdimg.jpg" },
                            { "url": "cat/fourthimg.jpg" }
                        ]
                    },

                    {
                        "name": "dogs",
                        "images": [
                            { "url": "dog/firstdog.jpeg" },
                            { "url": "dog/seconddog.jpg" },
                            { "url": "dog/thirddog.jpg" },
                            { "url": "dog/fourthdog.jpg" }
                        ]
                    },

                ]
}
var totalValues = ["cats","dogs"];
var imageArray = imageslide.therapy
function compare(imageArray,totalValues ){
    for(var i=0;i<imageArray.length;i++){
        for(var j=0;j<totalValues.length;j++){
            if(totalValues[j]=imageArray[i].name){
                console.log(imageArray[i].name+"=="+totalValues[j]);
                //imageArray[i].images.push({"url": "https://hexasoft.io"});
                //break;
                return imageArray[i].images;
            }
        }

    }
    //printResult(imageArray);
    return [];
}
function printResult(resultArray){
    for(var i=0;i<resultArray.length;i++) {
        console.log(resultArray[i].name);
        for(var j=0;j<resultArray[i].images.length;j++){
            console.log(resultArray[i].images[j]);
        }
    }
}
images = compare(imageArray, totalValues);
if(images.length > 0){
     for(var i=0;i<images.length; i++){
         images[i].push({"url": "your url"});
     }  
}

【讨论】:

  • 您可以将url传递给函数以推入数组,也可以简单地返回匹配结果的图像并将url推入数组。
  • 我试图投票支持 root 但我无法做到。因为名气少。一旦我得到了这些,我肯定会投赞成票。
【解决方案2】:

查看 javascript filter 函数(Link 用于文档)。

在你的情况下,你想做这样的事情:

function getImagesByAnimalName(animal_name){
  var imageArray = imageslide.therapy;
  
  var animalImages = imageArray.filter(animalData => {
    return animalData.name === animal_name;
  })
  return animalImages[0].images;
}

【讨论】:

    【解决方案3】:

    像这样试试。该函数将返回 totalValues 数组中每个元素的 URL。

    var totalValues = ["cats"];
    var slides = imageslide.therapy;
    
    function comp(slides, totalValues ){
      let retVal;
      for( val of totalValues ) {
        for( thisTh of slides ) {
          if( thisTh.name == val ){
            retVal = thisTh.images;
          }
        }
      }
      
      return retVal;
    }

    【讨论】:

      【解决方案4】:

      下面将创建pics,一个图像 URL 的平面数组,如果这是你想要的:

      var pics=[].concat(...imageslide.therapy.map(el=>{
        if (totalValues.indexOf(el.name)>-1) 
      return el.images.map(e=>e.url)}))
      console.log(pics);
      

      【讨论】:

        【解决方案5】:
        function compare(imageArray, totalValues) {
            for (var a = 0; a < imageArray.length; a++) {
                for (var j = 0; j < totalValues.length; j++) {
                    if (totalValues[j] == imageArray[a].name) {
                        allValues.push(imageArray[a].images);
                        for (var i = 0; i < allValues.length; i++) {
                           for(var j = 0; j < allValues[i].length; j++){
                            buildSlide(allValues[i][j].url);
                        }
                        }
                    }
                }
            }
            displaySlides(slide_index);
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-04-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多