我无法读取undefined的推送属性。为什么不定义?当我console.log(columnsArray[i])
时,它会向我展示价值。我不明白。
var columnsArray = ["col1","col2","col3"];
var indexArray = [];
function submitIndex() {
for (var i = 0; i <= columnsArray.length ; i++) {
if ($("#" + columnsArray[i]).is(":checked") === true) {
indexArray.push(columnsArray[i]);
} else {
console.log(columnsArray[i] + "is not checked");
}
}
var indexArray = indexArray.filter(onlyUnique);
console.log(indexArray);
}
答案 0 :(得分:1)
<强>问题:强>
在行中:
function getdata($user_id){
$this->db->select("products.*,users.*");
$this->db->from('products');
$this->db->join('users','users.user_id = products.user_id','left');
$this->db->where('users.user_id', $user_id);
$query = $this->db->get();
return $query->result();
}
您试图在循环之前已声明var indexArray = indexArray.filter(onlyUnique);
变量之后重新声明该变量。
它将导致变量被提升,因此循环前的第一个声明将被忽略,因此indexArray
将在循环内indexArray
。
有关详细信息,请查看Hoisting和var keyword MDN参考资料。
<强>解决方案:强>
要解决此问题,您需要删除此行中的undefined
关键字:
var
答案 1 :(得分:0)
请在此处查看我的小提示,以便复制error,然后查看solution here
需要注意的是这些
var columnsArray = ["col1","col2","col3"];
var indexArray = [];
function submitIndex(indexArray) {
for (var i = 0; i < columnsArray.length ; i++) //you dont need to go till
columnsArray length as this is 0 based indexed array not 1 so removed =
from here
{
console.log('i='+i+' and columnsArray[i]='+columnsArray[i]);
if ($("#" + columnsArray[i]).is(":checked") === true) {
indexArray.push(columnsArray[i]);
} else {
console.log(columnsArray[i] + "is not checked");
}
}
// var indexArray = indexArray.filter(onlyUnique); I dont have onlyUnique
filter so commented out
console.log(indexArray);
}
submitIndex(indexArray);