0

I have an array of object like this :

damages: [
        {
            name: "Roof",
            photos: [
                {image_url: "http://www.url1.com"},
                {image_url: "http://www.url2.com"},
                {image_url: "http://www.url3.com"},
           ]
        },
        {
            name: "Doors",
            photos: [
                {image_url: "http://www.url4.com"},
                {image_url: "http://www.url5.com"},
                {image_url: "http://www.url6.com"},
                {image_url: "http://www.url7.com"}
            ]
        }
    ]

If I have a value of image_url how can I loop through the damages to get a name property?

Let say that I have something like this :

let image_url = "http://www.url6.com";
let name = damages.map(i => ....)    //"Doors"
2

3 Answers 3

3

You could try something like this?

var imgUrl = "http://www.url6.com";

for(var i = 0; i < damages.length; i++) {
    for(var j = 0; j < damages[i].photos.length; j++) {
        if(damages[i].photos[j].image_url === imgUrl) {
            console.log(damages[i].name);
        }
    }
}
Sign up to request clarification or add additional context in comments.

Comments

2
var d  = [
    {
        name: "Roof",
        photos: [
            {image_url: "http://www.url1.com"},
            {image_url: "http://www.url2.com"},
            {image_url: "http://www.url3.com"},
       ]
    },
    {
        name: "Doors",
        photos: [
            {image_url: "http://www.url4.com"},
            {image_url: "http://www.url5.com"},
            {image_url: "http://www.url6.com"},
            {image_url: "http://www.url7.com"}
        ]
    }
];


function find(data, value){
   for(var i = 0; i < data.length; i++)
  {

      for(var j = 0; j < data[i].photos.length; i++)
      {
          if(data[i].photos[j].image_url == value)
          {
            return data[i].name;
          }
      }

  }
}

  alert(find(d,"http://www.url1.com"));

Comments

1

You could use Array#find and Array#some

function getName(url) {
    return damages.find(a => a.photos.some(b => b.image_url === url)).name;
}

var damages = [{ name: "Roof", photos: [{ image_url: "http://www.url1.com" }, { image_url: "http://www.url2.com" }, { image_url: "http://www.url3.com" }, ] }, { name: "Doors", photos: [{ image_url: "http://www.url4.com" }, { image_url: "http://www.url5.com" }, { image_url: "http://www.url6.com" }, { image_url: "http://www.url7.com" }] }];

console.log(getName('http://www.url6.com'));

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.