Javascript 如何比较JSON数组并分配固定值
我想将“应用程序”中的所有收藏夹值更改为false,但“收藏夹列表”中的除外。我更喜欢在lo dash中这样做Javascript 如何比较JSON数组并分配固定值,javascript,json,replace,insert-update,lodash,Javascript,Json,Replace,Insert Update,Lodash,我想将“应用程序”中的所有收藏夹值更改为false,但“收藏夹列表”中的除外。我更喜欢在lo dash中这样做 var应用=[{ 应用程序ID:1, 最爱:假 },{ 应用程序ID:2, 最爱:假 },{ 应用程序ID:3, 最爱:假 },{ 应用程序ID:4, 最爱:假 },{ 应用程序编号:5, 最喜欢的:真的 }] var-favoritelest=[{id:2},{id:4}]; var updateFavorites=函数(){ _(应用程序)forEach(功能(应用程序){ if
var应用=[{
应用程序ID:1,
最爱:假
},{
应用程序ID:2,
最爱:假
},{
应用程序ID:3,
最爱:假
},{
应用程序ID:4,
最爱:假
},{
应用程序编号:5,
最喜欢的:真的
}]
var-favoritelest=[{id:2},{id:4}];
var updateFavorites=函数(){
_(应用程序)forEach(功能(应用程序){
if(u.contains(favoriteList,app.app_ID){
app.favorite=true;
}否则{
app.favorite=false;
}
})
}
//预期结果是所有应用程序。除应用程序ID的2和4外,应用程序ID值应为false。
我对lodash还不是很精通,但你的代码似乎离我不远了:
var updateFavorites = function(){
_(apps).forEach(function(app){
app.favorite = !!_.find(favoriteList, { 'id': app.app_ID });
})
};
当没有结果时,find返回数组或未定义的。!!是双重否定(隐式转换为布尔值)。因此!!未定义===false,!!['anythingorevenothing']==true我还不太熟悉lodash,但您的代码似乎离我们不远了:
var updateFavorites = function(){
_(apps).forEach(function(app){
app.favorite = !!_.find(favoriteList, { 'id': app.app_ID });
})
};
当没有结果时,find返回数组或未定义的。!!是双重否定(隐式转换为布尔值)。因此!!未定义===false,!!['anythingorevenothing']==true我还不太熟悉lodash,但您的代码似乎离我们不远了:
var updateFavorites = function(){
_(apps).forEach(function(app){
app.favorite = !!_.find(favoriteList, { 'id': app.app_ID });
})
};
当没有结果时,find返回数组或未定义的。!!是双重否定(隐式转换为布尔值)。因此!!未定义===false,!!['anythingorevenothing']==true我还不太熟悉lodash,但您的代码似乎离我们不远了:
var updateFavorites = function(){
_(apps).forEach(function(app){
app.favorite = !!_.find(favoriteList, { 'id': app.app_ID });
})
};
当没有结果时,find返回数组或未定义的。!!是双重否定(隐含转换为布尔值)。因此!!undefined===false,!!['anythingovernothing']==true我认为按数组搜索更好,所以我将favoriteList转换为数组
var favoriteList = _.map([{id: 2}, {id: 4}], 'id');
apps = _.forEach(apps, function (el) {
el.favorite = !!~_.indexOf(favoriteList, el.app_ID);
// or
// el.favorite = _.indexOf(favoriteList, el.app_ID) > -1 ? true : false;
// this is the same, but more clearly for understanding
});
演示:
JSPerf:我认为按数组搜索更好,所以我将favoriteList转换为数组
var favoriteList = _.map([{id: 2}, {id: 4}], 'id');
apps = _.forEach(apps, function (el) {
el.favorite = !!~_.indexOf(favoriteList, el.app_ID);
// or
// el.favorite = _.indexOf(favoriteList, el.app_ID) > -1 ? true : false;
// this is the same, but more clearly for understanding
});
演示:
JSPerf:我认为按数组搜索更好,所以我将favoriteList转换为数组
var favoriteList = _.map([{id: 2}, {id: 4}], 'id');
apps = _.forEach(apps, function (el) {
el.favorite = !!~_.indexOf(favoriteList, el.app_ID);
// or
// el.favorite = _.indexOf(favoriteList, el.app_ID) > -1 ? true : false;
// this is the same, but more clearly for understanding
});
演示:
JSPerf:我认为按数组搜索更好,所以我将favoriteList转换为数组
var favoriteList = _.map([{id: 2}, {id: 4}], 'id');
apps = _.forEach(apps, function (el) {
el.favorite = !!~_.indexOf(favoriteList, el.app_ID);
// or
// el.favorite = _.indexOf(favoriteList, el.app_ID) > -1 ? true : false;
// this is the same, but more clearly for understanding
});
演示:
JSPerf:最好我想知道一个更有效的方法来实现这一点最好我想知道一个更有效的方法来实现这一点最好我想知道一个更有效的方法来实现这一点最好我想知道一个更有效的方法来实现这一点所有的例子都很好,但这个解决方案需要额外的点减少步骤数的简洁性。谢谢,效果很好!好吧,从所有这些下划线学习中,我忘记了vanilla JS。增加了你的答案所有示例都很好,但是这个解决方案在减少步骤数方面的简洁性给了额外的分点。谢谢,效果很好!好吧,从所有这些下划线学习中,我忘记了vanilla JS.Upped您的答案所有示例都很好,但此解决方案在减少步骤数量方面的简洁性给了额外的分数。谢谢,这非常有效!从所有这些下划线学习中,我忘记了vanilla JS。Upped您的答案所有示例都很好,但此解决方案在减少步骤数量方面的简洁性给了额外的分数s、 谢谢,这很好!好吧,从所有这些下划线学习中,我忘记了香草JS。增加了你的答案