根据数组键比较然后输出值
Compare and then output value based on array key
我很难弄明白。
背景:
我正在通过 graphQL 为不同的屏幕输出各种尺寸的图像,然后映射它们:
const variantSizes = variants.map(el => ({
320: el.node.defaultImage.url_320,
640: el.node.defaultImage.url_640,
768: el.node.defaultImage.url_768,
1280: el.node.defaultImage.url_1280,
1920: el.node.defaultImage.url_1920,
2560: el.node.defaultImage.url_2560
}));
输出我这个:
然后我设置不同的屏幕尺寸并检查容器宽度,并根据最接近的值输出应该显示的值:
const imageContainer = document.querySelector("#splide-slide01");
const containerWidth = imageContainer.offsetWidth;
const counts = [320, 640, 768, 960, 1280, 1920, 2560];
const goal = containerWidth;
const output = counts.reduce((prev, curr) => Math.abs(curr - goal) < Math.abs(prev - goal) ? curr : prev);
现在是我挣扎的部分。
我正在尝试比较这两个,所以数组键和 const 输出 如果它们匹配,那么如果 VariantSizes[ 的键名=46=]匹配,它应该输出那个键的值。
但我不知道如何获取值的名称,而不是这些映射的 VariantSizes 的值本身,然后将其与 output的屏幕大小,然后输出匹配的值。
基本上我想要达到的目标是:
屏幕尺寸接近 640px 的用户访问网站,它将根据 const reduce 将其与 640px 值匹配,然后该值将与 640 来自 const variantSizes 的名称,它将从 variantSizes 输出 640 的值。
该值基本上是该特定尺寸的图像 URL,然后我会将其放入主图像的 src 中。
感谢您的帮助!
不完全清楚你想要实现什么,抱歉。不过我会尽力帮忙的。
变体大小看起来像一个数组,但您的控制台输出显示的是对象。
所以有两种方法可以解决这个问题。
如果你有一个对象,你可以去:
const resultImage = variantSizes[output]
如果您有一个对象数组并且需要获取字符串数组,您可以这样做:
const resultImages = variantSizes.map(variant => variant[output])
我很难弄明白。
背景:
我正在通过 graphQL 为不同的屏幕输出各种尺寸的图像,然后映射它们:
const variantSizes = variants.map(el => ({
320: el.node.defaultImage.url_320,
640: el.node.defaultImage.url_640,
768: el.node.defaultImage.url_768,
1280: el.node.defaultImage.url_1280,
1920: el.node.defaultImage.url_1920,
2560: el.node.defaultImage.url_2560
}));
输出我这个:
然后我设置不同的屏幕尺寸并检查容器宽度,并根据最接近的值输出应该显示的值:
const imageContainer = document.querySelector("#splide-slide01");
const containerWidth = imageContainer.offsetWidth;
const counts = [320, 640, 768, 960, 1280, 1920, 2560];
const goal = containerWidth;
const output = counts.reduce((prev, curr) => Math.abs(curr - goal) < Math.abs(prev - goal) ? curr : prev);
现在是我挣扎的部分。
我正在尝试比较这两个,所以数组键和 const 输出 如果它们匹配,那么如果 VariantSizes[ 的键名=46=]匹配,它应该输出那个键的值。
但我不知道如何获取值的名称,而不是这些映射的 VariantSizes 的值本身,然后将其与 output的屏幕大小,然后输出匹配的值。
基本上我想要达到的目标是:
屏幕尺寸接近 640px 的用户访问网站,它将根据 const reduce 将其与 640px 值匹配,然后该值将与 640 来自 const variantSizes 的名称,它将从 variantSizes 输出 640 的值。
该值基本上是该特定尺寸的图像 URL,然后我会将其放入主图像的 src 中。
感谢您的帮助!
不完全清楚你想要实现什么,抱歉。不过我会尽力帮忙的。
变体大小看起来像一个数组,但您的控制台输出显示的是对象。 所以有两种方法可以解决这个问题。
如果你有一个对象,你可以去:
const resultImage = variantSizes[output]
如果您有一个对象数组并且需要获取字符串数组,您可以这样做:
const resultImages = variantSizes.map(variant => variant[output])