Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将具有一个值的列表缩减为一个值的最佳方法是什么?[a] ->;A._Javascript - Fatal编程技术网

Javascript 将具有一个值的列表缩减为一个值的最佳方法是什么?[a] ->;A.

Javascript 将具有一个值的列表缩减为一个值的最佳方法是什么?[a] ->;A.,javascript,Javascript,在一个项目中,我通常使用如下列表: const listOfObjects = [{id: 1, selected: false}, {id: 2, selected: true}, ...] const getSelectedObject = list => list.filter(ob => ob.selected); const singleObjectList = getSelectedObject(listOfObjects); const fold = list =

在一个项目中,我通常使用如下列表:

const listOfObjects = [{id: 1, selected: false}, {id: 2, selected: true}, ...]
const getSelectedObject = list => list.filter(ob => ob.selected);
const singleObjectList = getSelectedObject(listOfObjects);
const fold = list => list.reduce((res, r) => r, null);
const ob = fold(singleObjectList)
我按如下方式过滤选定对象的数组:

const listOfObjects = [{id: 1, selected: false}, {id: 2, selected: true}, ...]
const getSelectedObject = list => list.filter(ob => ob.selected);
const singleObjectList = getSelectedObject(listOfObjects);
const fold = list => list.reduce((res, r) => r, null);
const ob = fold(singleObjectList)
因此,我的代码如下所示:

const listOfObjects = [{id: 1, selected: false}, {id: 2, selected: true}, ...]
const getSelectedObject = list => list.filter(ob => ob.selected);
const singleObjectList = getSelectedObject(listOfObjects);
const fold = list => list.reduce((res, r) => r, null);
const ob = fold(singleObjectList)
singleObjectList
假定为包含单个元素的列表或筛选器的空列表,但与任何值都不匹配

然后,我尝试获取列表的第一个值,如下所示:

const listOfObjects = [{id: 1, selected: false}, {id: 2, selected: true}, ...]
const getSelectedObject = list => list.filter(ob => ob.selected);
const singleObjectList = getSelectedObject(listOfObjects);
const fold = list => list.reduce((res, r) => r, null);
const ob = fold(singleObjectList)
fold函数的结果可以是
null
或列表中的最后一个值,如果列表有一个值[a],它将返回a

我觉得使用reduce有点不舒服。我想知道是否有更好/更干净的方法从列表中获取单个值

更新

解决方法是使用

我得到了很大的帮助,一些人建议使用:

list[0]
从技术上讲,JavaScript提供了一个解决方案,但它提供了一些有用的函数来处理列表,如filter、reduce和map。我想知道我是否在使用此任务的
filter
reduce
组合时遗漏了什么。实际上,我缺少了
find
功能。

有什么问题吗

list[0]
??假设它肯定有一个元素。

有什么问题吗

list[0]

??假设它肯定有1个元素。

对于第一个项或
null
的结果,对于不存在的项,可以使用逻辑或
|
来获取
null
值,而不是
未定义的

var a = array[0] || null;
或使用

const listOfObjects=[{id:1,selected:false},{id:2,selected:true}],
getSelected=a=>a.selected,
find=a=>a.find(getSelected),
结果=查找(对象列表);

控制台日志(结果)对于包含第一项或
null
的结果,您可以使用逻辑或
|
为不存在的项获取
null
值,而不是
未定义的

var a = array[0] || null;
或使用

const listOfObjects=[{id:1,selected:false},{id:2,selected:true}],
getSelected=a=>a.selected,
find=a=>a.find(getSelected),
结果=查找(对象列表);
控制台日志(结果)试试这个

list.reverse().find(item => item.selected)
从具有
{selected:true}

删除第一项的
reverse()

const list=[{id:1,selected:false},{id:2,selected:true}]
const result=list.reverse().find(item=>item.selected)
console.log(结果)
试试这个

list.reverse().find(item => item.selected)
从具有
{selected:true}

删除第一项的
reverse()

const list=[{id:1,selected:false},{id:2,selected:true}]
const result=list.reverse().find(item=>item.selected)

console.log(结果)
您可以尝试
list.find(item=>item.selected)
您可以尝试
list.find(item=>item.selected)
您可以一步完成:

const listOfObjects = [{id: 1, selected: false}, {id: 2, selected: true}, ...]
const getSelected= list=>list.find(o=>o.selected);

let myObject=getSelected(listOfObjects);

您可以一步完成:

const listOfObjects = [{id: 1, selected: false}, {id: 2, selected: true}, ...]
const getSelected= list=>list.find(o=>o.selected);

let myObject=getSelected(listOfObjects);


也许array.pop()?pop()不是一个纯粹的函数,我更愿意创建一个可重用的函数,它不会改变传递给函数的数组。惊讶于为什么这个问题会被忽略@aquaragait这里看起来是一样的,这个问题不清楚,你真正想要什么,正如你在评论中所说的。你也可以把它添加到问题中。也许array.pop()?pop()不是一个纯函数,我宁愿创建一个可重用的函数,它不会改变传递给函数的数组。惊讶于为什么这个问题会被忽略@aquaragait看起来像是这样,这个问题不清楚,你真正想要什么,正如你在评论中所说的。你也可以把这一点加到问题上,本质上没有什么不对的。它会做那件事的。JavaScript提供了一些有用的函数来处理列表,如filter、reduce和map。我宁愿使用函数方法来解决这个问题。@SagiSergioNadir:我认为索引操作的功能不亚于那些函数,只是语法不同,但仍然是纯粹的功能。幂等元,纯。换句话说:你在胡说八道。@KarolyHorvath对我来说,使用reduce/find这样的操作更清晰。对我来说,这种流动越来越清晰。这就足够让我为列表[0]寻找一个替代方案了@SagiSergioNadir:是的,但是如果你为了自己的娱乐而使用任意规则,那么在某个时候,你会更接近于困惑。stackexchange而不是这样。但无论什么能让你的船浮起来,本质上没有什么不对。它会做那件事的。JavaScript提供了一些有用的函数来处理列表,如filter、reduce和map。我宁愿使用函数方法来解决这个问题。@SagiSergioNadir:我认为索引操作的功能不亚于那些函数,只是语法不同,但仍然是纯粹的功能。幂等元,纯。换句话说:你在胡说八道。@KarolyHorvath对我来说,使用reduce/find这样的操作更清晰。对我来说,这种流动越来越清晰。这就足够让我为列表[0]寻找一个替代方案了@SagiSergioNadir:是的,但是如果你为了自己的娱乐而使用任意规则,那么在某个时候,你会更接近于困惑。stackexchange而不是这样。但无论什么东西能让你的船漂浮。嗨,尼娜,你之前建议的数组。prototype。find()正是我想要的。你为什么要删除你的答案?看到你修正了!太棒了:)
|
如果值恰好是
0
,将导致
null
,可能不正确。@RemcoGerlich,对,但项目看起来像对象。您好,尼娜,您以前建议的数组.prototype.find()正是我要找的。你为什么要删除你的答案?看到你修正了!太棒了:)
|
如果值恰好是
0
,则将导致
null
,可能不正确。@RemcoGerlich,对,但项目看起来像对象。谢谢帮助:)谢谢帮助:)