我已经生成了一组用于其他功能的json。
window.customJSON = {
"1894873974": {
title: "Yellow",
images: [
{
main: "/images/img1.jpg",
alt: "image alt tag"
},
{
main: "/images/img2.jpg",
alt: "image alt tag"
}
]
},
"2397423987": {
title: "Orange",
images: [
{
main: "/images/img1.jpg",
alt: "image alt tag"
}
]
}
}
我想做的是获取所有图像在“图像”中所有“主”值,并将它们分配到单个数组中。数字代表唯一的代码,因此我不是要获取特定的索引,而是要获取所有图像网址。
我正在使用lodash成功映射其他内容,因此我尝试使用:
var imgArray = _.map(window.customJSON.images, 'main');
我只是不太确定正确的语法。我浏览了lodash文档,但没有找到合适的单词组合来获取答案。
jQuery或lodash解决方案都可以使用。
谢谢
答案 0 :(得分:1)
在映射flatMap
属性之前,您需要先images
main
。请参见下面的工作演示:
let customJSON = {
"1894873974": {
title: "Yellow",
images: [{
main: "/images/img1.jpg",
alt: "image alt tag"
},
{
main: "/images/img2.jpg",
alt: "image alt tag"
}
]
},
"2397423987": {
title: "Orange",
images: [{
main: "/images/img1.jpg",
alt: "image alt tag"
}]
}
}
let result = _(customJSON)
.flatMap('images')
.map('main')
.value();
console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.10/lodash.min.js"></script>
如果仅需要获取唯一值,则在uniq()
之前也应用value()
。
答案 1 :(得分:0)
环绕对象键并映射图像。
let customJSON = {
"1894873974": {
title: "Yellow",
images: [
{
main: "/images/img1.jpg",
alt: "image alt tag"
},
{
main: "/images/img2.jpg",
alt: "image alt tag"
}
]
},
"2397423987": {
title: "Orange",
images: [
{
main: "/images/img1.jpg",
alt: "image alt tag"
}
]
}
}
let res = [];
for(var key in customJSON) {
let images = customJSON[key]['images'];
res = res.concat(images.map(image => image.main))
}
console.log(res);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.10/lodash.core.js"></script>