Javascript方法返回对象数组而不是对象。
辅助方法:
export const getDefaultValue = (valueList) => {
return defaultValue = valueList.map((item, index) => {
if (item.isDefault) {
return item;
}
});
}
输入:
let valueList = [{itemId: 1, isDefault: true}, {itemId: 2, isDefault: false}, {itemId: 3, isDefault: false}]
调用getDefaultValue(valueList)
时,我得到的输出如下:
输出:
[{itemId: 1, isDefault: true}, undefined, undefined]
getDefaultValue
不会只返回{itemId: 1, isDefault: true}
吗?
新手加入JavaScript
。我在这里想念什么?
答案 0 :(得分:3)
map
不合适,请使用find
:
export const getDefaultValue = (valueList) => {
return defaultValue = valueList.find((item, index) => {
if (item.isDefault) {
return true;
}
});
}
您还可以简化它:
export const getDefaultValue = valueList => valueList.find(({ isDefault }) => isDefault);
答案 1 :(得分:2)
您需要使用Qt documentation过滤数组,这取决于返回值是否返回元素。
return defaultValue = valueList.filter(item => item.isDefault);
Array#filter
为每个元素返回一个新元素。
一个明确的问题描述之后,您需要使用Array#map
来获取单个对象。
此方法返回第一个找到的元素;如果没有满足条件,则返回undefined
。
return defaultValue = valueList.find(item => item.isDefault);
答案 2 :(得分:2)
由于您只想从数组中获取一个匹配值,因此应改用.find
:
export const getDefaultValue = (valueList) => {
return defaultValue = valueList.find((item) => {
if (item.isDefault) {
return true;
}
});
};
.map
将始终根据旧数组的所有项目构造一个新数组,这不是您想要的。
答案 3 :(得分:0)
Array.Map()方法返回值数组。由于您要返回的对象本身就是对象,因此最终输出将成为对象数组。
尝试一下:
export const getDefaultValue = (valueList) => {
return defaultValue = valueList.map((item, index) => {
if (item.isDefault) {
return item.itemId;
}
});
}
如果没有返回任何内容,还将捕获未定义的内容。您可以改为过滤方法。
const getDefaultValue = valueList.filter(item => item.isDefault);