我有一个ajax post方法。我从后端获得了一个对象
>Object{Info:Array[200]}
>Info:Array[200]
>[0-99]
>0:Object
name:'Ashley'
on_pay: true
valid:"0"
>[100-199]
当我做一个console.log(响应);在post方法中,我看到以下数据。
def delete
@subject = Subject.find(params[:id]).delete
end
def destroy
@subject = Subject.find(params[:id]).destroy
redirect_to(:action=> 'index')
end
因此每个数组都有像上面提到的名称,on_pay和有效的对象。我想做以下事情 由于在我的情况下所有on_pay值都为真,我需要将其转换为false。同样有效的字符串为0.我需要将所有值设置为空白而不是0。
有可能做到吗?有人可以对这些有所了解。
答案 0 :(得分:2)
考虑到您显示的JSON结构,以下内容应该可以更改on_pay
值:
response.Info.forEach(function(item){
item.on_pay = false;
});
答案 1 :(得分:1)
如果我正确理解您的问题,response
是一系列项目。您希望保持这些项目不变,但将on_pay
属性false
和valid
变为空字符串。
您可以使用Array::map()转换每个项目。
/*jslint node:true*/
"use strict";
// I am assuming your response looks something like this
var response = {
Info: [
{
name: "Ashley",
on_pay: true,
valid: "0"
},
{
name: "Jim",
on_pay: true,
valid: "0"
},
{
name: "John",
on_pay: true,
valid: "0"
}
]
};
// This will produce a new variable that will hold the transformed Info array
var fixedResponseInfo = response.Info.map(function (item) {
item.on_pay = false;
item.valid = "";
return item;
});
// This will edit the response.Info array in place
response.Info.forEach(function (item) {
item.on_pay = false;
item.valid = "";
});
console.log(fixedResponseInfo);
console.log(response);
这将保留原始响应变量并生成包含转换后数组的新变量fixedResponseInfo
。如果您不关心response
中的数据是否已更改,则可以使用Array::forEach()
进行迭代。