编辑: faintsignal下面提供的链接是最适用的答案。它不仅解释了为什么会出现这种情况,而且还能解决所述问题。
我有一个数组,我想确定所有元素是否等于单个值。以下代码似乎应该可行,但它并没有。谁能解释一下?
<link href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/3.5.2/animate.min.css" rel="stylesheet" />
<link href="https://code.getmdl.io/1.3.0/material.indigo-pink.min.css" rel="stylesheet" />
<script src="https://code.getmdl.io/1.3.0/material.min.js"></script>
<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
<section>
<div class="mdl-card">
<button class="mdl-button mdl-js-button">Close</button>
</div>
<p>
Content to test the height of the div above
</p>
</section>
欢迎提供任何信息!
答案 0 :(得分:1)
检查集合的大小是否为1:
const initialState = {
activePost: { post: null, error: null, loading: false },
};
export default function(state = initialState, action) {
let error;
switch (action.type) {
case UPDATE_POST: {
return { ...state, activePost: { ...state.post, loading: true, error: null } };
}
case UPDATE_POST_SUCCESS: {
return { ...state, activePost: { post: action.payload, loading: false, error: null } };
}
case UPDATE_POST_FAILURE: {
error = action.payload || { message: action.payload.message };
return { ...state, activePost: { ...state.activePost, loading: false, error: error } };
}
}
}
正如其他答案/评论已经提到的那样,
new Set(array2).size === 1
返回false,因为不同的对象不相等。
理论上,您可以使用注释中提到的问题中的技术检查new Set(array2) == new Set(['foo'])
和new Set(array2)
的等效性,但是您不需要这样做,因为检查大小是否为1完全符合你的需要。