我有一个要在Javascript中编辑的PHP数组。
我将它从php传递到javascript,如下所示:
var allPartsList = JSON.parse('<?php echo json_encode($all); ?>');
如果我
console.log(all);
我看到以下内容:我最终想要做的是查找从PHP传递过来的行,其中两个字段之一(
partNumber
或supplier
为空),然后根据用户提交的值将值添加回数组中。下面的值由用户单击的复选框提供。我有一个循环语句的语法:
$('input[type="checkbox"][id="supplierCheck"]').change(function() {
if(this.checked) {
var supplier = this.dataset.supplier;
var partNumber = this.dataset.partnumber;
var x = this.dataset.x;
for (var i = 0; i < allPartsList.length; i++) {
if (allPartsList[i][0] == x) {
allPartsList[i][2] = supplier; //replace whatever supplier is with the supplier the user has chosen
}
}
console.log(allPartsList);
}
});
我的for循环失败了,因为我不知道如何访问
allPartsList
的各个元素。如果我执行console.log(allPartsList[0]
,我会看到Object {line: 0, supplier: "a", partNumber: "asdf"}
所以我不确定它是否是我可以通过的数组。我似乎可以访问
allPartsList[0]
,但是我无法访问[0]
的任何元素,例如allPartsList[0][0]
。我在这里做错了什么? 最佳答案
您的allPartsList
是一维对象数组,字符串键不是数字,因此allPartsList[i][0]
是不正确的。
要更新循环中的属性,您可以执行以下操作:
allPartsList[i].supplier = supplier;
或读取属性:
console.log( allPartsList[i].supplier );
我不确定您要使用
x
检查做什么,看来您想测试索引,因此在这种情况下,请像i
一样测试if (i == x) {
旁注:您不需要初始JSON解码。 PHP将生成恰好也是有效JavaScript的JSON。因此,您可以简化为:
var allPartsList = <?php echo json_encode($all); ?>;