选择某些值并在ES6中按字母顺序排序

时间:2018-10-11 15:19:47

标签: javascript ecmascript-6

如何选择某些值并使用ES6按字母顺序对它们进行排序。 当前代码定义一个常数。我想知道是否可以在不必仅使用所需值创建新常量的情况下操纵这些数据。

export const names = {
John: 'John',
Mike: 'Mike',
David: 'David',
Chris: 'Chris'
};

只退还克里斯和大卫。

克里斯

大卫

2 个答案:

答案 0 :(得分:3)

const names = {
  John: 'John',
  Mike: 'Mike',
  David: 'David',
  Chris: 'Chris',
};

const searchNames = (args, search) => {
  const arr = Object.values(args);
  const result = arr.filter(n => {
    return search.includes(n);
  });
  return result.sort().join('\n');
};

searchNames(names, ['David', 'Chris']);
// returns: Chris  
//          David

不是最优雅的,但是可以。从数组而不是对象开始会更容易。由于键和值相同,因此似乎不需要该对象。尽管如此,这对于数组来说是一项非常简单的任务。我将obj转换为仅包含值的数组。然后创建一个新的数组 过滤掉我们想要的名称,返回按字母顺序和字符串格式排序的数组。 return语句中的('\n')只是用新行来分隔数组的元素,因为这是您显示的格式。但是,如果您不需要将名称放在单独的行中,则可以将其更改为任何内容。

根据documentation,仅在此处可以使用const 来说明:

  

const声明创建对值的只读引用。这并不意味着它拥有的值是不变的,只是不能重新分配变量标识符。

答案 1 :(得分:-1)

是的,您可以操纵这些数据,看看const在javascrips中的工作方式。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/const

const names = {
John: 'John',
Mike: 'Mike',
David: 'David',
Chris: 'Chris'
};

console.log(names.John);

names.John = 'noJohn';

console.log(names.John);