Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.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 如何使用配置对数组进行排序_Javascript_Node.js_Ramda.js - Fatal编程技术网

Javascript 如何使用配置对数组进行排序

Javascript 如何使用配置对数组进行排序,javascript,node.js,ramda.js,Javascript,Node.js,Ramda.js,如何使用Ramda上的配置值对数组文件进行排序 我尝试使用R.map,然后添加一个条件R.includes,如果它为真,则返回值R 但我一直在得到[Function],[Function],[Function]] 我使用的代码 args = [ 'BBQ', 'Tuna', 'Cake', 'Wood' ] config = [ { foodType: 'Tuna' }, { foodType: 'BBQ' }, { foodType: 'Cake'

如何使用Ramda上的配置值对数组文件进行排序 我尝试使用R.map,然后添加一个条件R.includes,如果它为真,则返回值R 但我一直在得到[Function],[Function],[Function]]

我使用的代码

args = [ 'BBQ', 'Tuna', 'Cake', 'Wood' ]

config = [ { foodType: 'Tuna' },
           { foodType: 'BBQ' },
           { foodType: 'Cake' } ]

const getPriority = R.curry((config, args) =>
  R.pipe(
    R.map(
      R.pipe(
        R.prop('foodType'),
          R.ifElse(
           R.includes(args),
           R.always
        )
      )
    ),
    R.flatten,
  )(config)
);

Expected result is [ 'Tuna', 'BBQ', 'Cake' ]

知道我为什么一直得到[[Function]、[Function]、[Function]]

吗?我想从我对代码的了解来猜测一下您的需求。在我看来,您需要
config
中的食物类型,这些食物类型也可以在
args
中找到,并按照它们在
config
中出现的顺序进行排序。是这样吗

如果是这样的话,这个代码似乎是有效的:

const getPriority=(args)=>(config)=>
config.reduce((a,{foodType})=>args.includes(foodType)?[…a,foodType]:a,[])
const args=[‘烧烤’、‘金枪鱼’、‘蛋糕’、‘木头’]
const config=[{foodType:'Tuna'},
{foodType:'Sprouts'},//已添加--并非所有内容都在输出中
{foodType:'BBQ'},
{foodType:'Cake'}]

log(getPriority(args)(config))
我试图根据我对代码的了解来猜测您的需求。在我看来,您需要
config
中的食物类型,这些食物类型也可以在
args
中找到,并按照它们在
config
中出现的顺序进行排序。是这样吗

如果是这样的话,这个代码似乎是有效的:

const getPriority=(args)=>(config)=>
config.reduce((a,{foodType})=>args.includes(foodType)?[…a,foodType]:a,[])
const args=[‘烧烤’、‘金枪鱼’、‘蛋糕’、‘木头’]
const config=[{foodType:'Tuna'},
{foodType:'Sprouts'},//已添加--并非所有内容都在输出中
{foodType:'BBQ'},
{foodType:'Cake'}]

log(getPriority(args)(config))
首先,您错误地使用了
ifElse
。它有三个参数:条件函数、结果函数和替代函数——所有参数都采用相同的输入值。然而,我一点也不清楚你想做什么。
pulk('foodType',config)
是否没有提供您想要的内容?我只需要使用config对arg进行排序,如果它有Tuna,则第一个值将是Tuna,依此类推,我认为pulk将无法使用该值,但会尝试进行排序,但您并不是简单地对arg进行排序。你也在过滤它们,对吗?否则,建议的输出中的
'Wood'
在哪里?首先,您错误地使用了
ifElse
。它有三个参数:条件函数、结果函数和替代函数——所有参数都采用相同的输入值。然而,我一点也不清楚你想做什么。
pulk('foodType',config)
是否没有提供您想要的内容?我只需要使用config对arg进行排序,如果它有Tuna,则第一个值将是Tuna,依此类推,我认为pulk将无法使用该值,但会尝试进行排序,但您并不是简单地对arg进行排序。你也在过滤它们,对吗?否则,
'Wood'
在您建议的输出中的什么位置?