![](/img/trans.png)
[英]Check all object values inside Array javascript has boolean false
[英]Check if object array contains boolean true/false
我有一個數組對象,其中每個數組默認為 [false,false] 並且它對應於一個具有是和否選項的復選框。 如果用戶選擇是,數組將更新為 [true,false],如果用戶回答否,則數組將更新為 [false, true]。
我的對象的視覺表示
Object
|
|-> 1
|-> [false,false]
|-> 2
|-> [false,false]
...
我嘗試了以下操作,但這不是我需要的,因為它似乎沒有檢查數組的第二個索引。
for (var idx = 1; idx <=6 ; idx++) {
if (DataObj[idx].indexOf(true))
{
console.log("Not Answered");
}
else
{
console.log("Answered");
}
代碼輸出
[true, false]
Answered
[false, true]
Not Answered
預期輸出
[true, false]
Answered
[false, true]
Answered
[false, false]
Not answered
我也試過($.inArray(true, DataObj[idx]))
但這不起作用或我遺漏了一些東西。 我是在正確的方向嗎?
如果找到, $.inArray(item, array)
和Array.prototype.indexOf(item)
返回$.inArray(item, array)
Array.prototype.indexOf(item)
的索引,否則返回 -1。 if (a.indexOf(x))
只檢查索引是否為零。 您必須檢查索引是否不是-1
,或者至少為零:
for (var idx = 1; idx <=6 ; idx++) {
if (DataObj[idx].indexOf(true) >= 0)
您目前只檢查“true”是否在數組中,如果它只會返回 true 的第一個索引,您可以使用 lastIndexOf(true) 獲得創意,但邏輯可能會開始變得混亂
您還需要在 indexOf() 中添加一些檢查,它要么返回 -1 要么返回索引,因此 -1 表示它不存在:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf
更好的是,您可以像遍歷對象一樣遍歷該數組,如下所示:
for (var idx = 1; idx <=6 ; idx++) {
var array = DataObj[idx];
for (var i = 0; i < array.length; i++) {
// here you will loop through the entire array and see both 'i' indexes
}
if (DataObj[idx].indexOf(true) > -1) // you need to do this here as well
{
console.log("Not Answered");
}
else
{
console.log("Answered");
}
您可以使用Array#some()
和Boolean
作為回調。
var object = { 0: [true, false], 1: [false, true], 2: [false, false] }; document.write(Object.keys(object).map(function (k) { return object[k].some(Boolean) ? 'Answered' : 'Not answered'; }).join('<br>'));
您可以使用reduce
函數和logic OR
( ||
)
var j = { 1: [true, false], 2: [false, true], 3: [false, false] }; var r = Object.keys(j).map(e => j[e].reduce((p, c) => p || c, false)); document.write(r.map(e => e ? ' Answered' : ' Not answered '))
我最終使用以下作為解決方案
for (var idx = 1; idx <=6 ; idx++) {
qcomplete = qcomplete + (surveyDataObj[idx][0] ? 1 : 0);
qcomplete = qcomplete + (surveyDataObj[idx][1] ? 1 : 0);
}
我建議使用 jQuery。
var a = { a1: [false, false] }; $("#b1").change(function() { // <-- when checkbox status is changing if($(this).is(":checked")){ a.a1[0]=true; a.a1[1]=false; $("body").append(JSON.stringify(a.a1)); // <-- just for the output }else{ a.a1[0]=false; a.a1[1]=true; $("body").append(JSON.stringify(a.a1)); // <-- just for the output } })
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <input id="b1" type="checkbox"></input>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.