我有一个如下的JSON数据集:
data: {
datasets: [{
data: [2, 4, 5, 7, 8]
}]
}
我从#dim
输入中尝试更新此集合的特定值,并将其余的值更改为0
。就像#dim
的值为2
一样,数据集将更新为[0, 5, 0, 0, 0]
。
我正在使用以下代码从输入中更改一个特定值。但是如何将其余的更新为0
?
$(".button").click(function() {
var dim = $('#dim').val();
data.datasets[2].data['' + dim + ''] = 5; //If dim value is 2, it makes data: [2, 5, 5, 7, 8]
//I need some code here that'll change the rest of the values to 0. That is [0, 5, 0, 0, 0]
}
答案 0 :(得分:1)
我认为您首先需要使用new Array(5).fill(0)
将所有数组值设置为零,然后应用代码更新第二个元素。
要将所有值设置为零,请尝试
const js_obj = {
data: {
datasets: [{
data: [2, 4, 5, 7, 8]
}]
}
}
let dim = 1; // as you're grabbing dim value from the button click
js_obj.data.datasets[0].data = new Array(5).fill(0)
js_obj.data.datasets[0].data[dim] = 5;
console.log(js_obj);
答案 1 :(得分:1)
您需要从0
而不是data.datasets
到第data.datasets[2]
个索引。
如果输入类型为text
,它将为您提供一个字符串,请使用parseInt
将其转换为数字。同样,数组索引从0
开始。因此,如果您希望更改数组中的第二个元素,则需要定位索引1中的元素。
let data = {
datasets: [{
data: [2, 4, 5, 7, 8]
}]
}
$(".button").click(function() {
var dim = parseInt($('#dim').val(), 10) - 1;
//setting all other value to 0
data.datasets[0].data.forEach(function(item, index) {
data.datasets[0].data[index] = 0
})
data.datasets[0].data['' + dim + ''] = 5;
console.log(data)
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type='text' id='dim'>
<button type='button' class='button'>Click</button>
答案 2 :(得分:0)
$(".button").click(function() {
var dim = $('#dim').val();
if(dim) {
for(var i=0;i<data.datasets[2].length;i++)
data.datasets[2].data[i] = 0;
data.datasets[2].data[dim - 1] = 5;
}
}