डेटाबेस से मुझे मिलता है:

"Data": [{
  "mainData": [{
    "_id": ObjectId("5ab63b22d012ea2bc0bb7e9b"),
    "date": "2018-03-24"
  }],
  "files": [
    {
      "_id": ObjectId("5ab63b22d012ea2bc0bb7e9d"),
      "filename": "file-1521892130284.png",
      "path": "uploads\\file-1521892130284.png"
    },
    {
      "_id": ObjectId("5ab63b22d012ea2bc0bb7e9c"),
      "filename": "file-1521892130285.png",
      "path": "uploads\\file-1521892130285.png"
    }
  ]
}]

लेकिन मुझे ऊपर कुछ इस तरह से बदलने की जरूरत है:

this.galleryImages = [
  {
    small: 'file-1521892130284.png'
  },
  {
    small: 'file-1521892130285.png'
  }
];

कुछ फ़ाइलों के पथ को पुनरावृत्त करने का बेहतर तरीका और इसे मांग गैलरी छवि वस्तु के रूप में बिल्कुल धक्का देना है? गैलरी इमेज - कोणीय से एनजीएक्स-गैलरी।

1
andrzej 29 मार्च 2018, 14:36

3 जवाब

सबसे बढ़िया उत्तर
const ObjectId = (v) => v; // dummy implementation

const dbResponse = {"Data": [{
  "mainData": [{
    "_id": ObjectId("5ab63b22d012ea2bc0bb7e9b"),
    "date": "2018-03-24"
  }],
  "files": [
    {
      "_id": ObjectId("5ab63b22d012ea2bc0bb7e9d"),
      "filename": "file-1521892130284.png",
      "path": "uploads\\file-1521892130284.png"
    },
    {
      "_id": ObjectId("5ab63b22d012ea2bc0bb7e9c"),
      "filename": "file-1521892130285.png",
      "path": "uploads\\file-1521892130285.png"
    }
  ]
},
]}

/* we get an array of "files" arrays */
const allFiles = dbResponse.Data.map(x => x.files)

/*
we map a files array to an array of {"small":...}
objects
*/
function getFilenames(files) {
  return files.map(keepOnlyFilename);
}

/*
we take an object like:
{
  "_id": ObjectId("5ab63b22d012ea2bc0bb7e9d"),
  "filename": "file-1521892130284.png",
  "path": "uploads\\file-1521892130284.png"
}
and we transform it to:
{
  "small": "file-1521892130284.png"
}
*/
function keepOnlyFilename(obj) {
  return {
    "small": obj.filename
  };
}

/* we put the above together as building blocks */
const final = allFiles.map(getFilenames);

console.log(final)
1
vassiliskrikonis 30 मार्च 2018, 18:56

सभी फ़ाइल नामों की एक सरणी के लिए, आपको Data और files की आंतरिक सरणी को पुनरावृत्त करने की आवश्यकता है। फिर नई वस्तुओं का निर्माण करें और बाहरी सरणी को कम करके आंतरिक परिणाम को मैप करें।

इस्तेमाल की गई विधि:

function ObjectId(v) { return v; }

var $scope = { "Data": [{ "mainData": [{ "_id": ObjectId("5ab63b22d012ea2bc0bb7e9b"), "date": "2018-03-24" }], "files": [{ "_id": ObjectId("5ab63b22d012ea2bc0bb7e9d"), "filename": "file-1521892130284.png", "path": "uploads\\file-1521892130284.png" }, { "_id": ObjectId("5ab63b22d012ea2bc0bb7e9c"), "filename": "file-1521892130285.png", "path": "uploads\\file-1521892130285.png" }] }] },
    array = $scope.Data.reduce(
        (r, { files }) => r.concat(files.map(({ filename: short }) => ({ short }))),
        []
    );

console.log(array);
.as-console-wrapper { max-height: 100% !important; top: 0; }
0
Nina Scholz 29 मार्च 2018, 12:09

var Data = JSON.parse(str); का उपयोग करके अपने JSON को पार्स करके प्रारंभ करें

फिर, एक नई वस्तु var galleryImage = []; बनाएं और अपने डेटा सरणी पर पुनरावृति करें।

for(var i =0; i < Data.files.length; i++)
  galleryImages[i] = { small : Data.files[i].filename }
0
Germain 29 मार्च 2018, 11:50