小编Tou*_*ffy的帖子

如何按字母顺序对对象数组进行排序(数字除外)?

我有这个数组:

sampleArray = [
  {name: 'product-2'},
  {name: 'product-15'},
  {name: 'product-3'},
  {name: 'product-10'}
]
Run Code Online (Sandbox Code Playgroud)

我想使用属性对其进行排序name,按字母顺序排列,字符串中的数字除外。

sort结合使用localeCompare

sampleArray.sort((a, b) => a.name.localeCompare(b.name))
Run Code Online (Sandbox Code Playgroud)

但是,作为name一个包含数字的字符串,我得到了这个:

sampleArray = [
  {name: 'product-10'},
  {name: 'product-15'},
  {name: 'product-2'},
  {name: 'product-3'}
]
Run Code Online (Sandbox Code Playgroud)

考虑到数字,我还需要以正确的顺序获取它。这会是什么:

sampleArray = [
  {name: 'product-2'},
  {name: 'product-3'},
  {name: 'product-10'},
  {name: 'product-15'}
]
Run Code Online (Sandbox Code Playgroud)

我知道如果我只处理数字,我可以做到:

sampleArray.sort((a,b) => a - b)
Run Code Online (Sandbox Code Playgroud)

但事实并非如此。

我该如何解决这个问题?

javascript arrays sorting object

4
推荐指数
1
解决办法
128
查看次数

如何对包含ES5集和地图的对象进行字符串化?

我正在开发一个Angular应用程序.我使用Typescript并拥有一个包含内置Set和Map类型的类.我的问题是我想将我的类的实例作为JSON存储在浏览器的localStorage中,但是当我尝试对它们进行字符串化时,我会得到这些类型的空字符串.

chrom的控制台示例:

> inst = new Object({
    'elem': new Set(),
    'str': 'somestring'
})
: Object {elem: Set(0), str: "somestring"}elem: Set(0)str: "somestring"}
> inst.elem.add('123');
: Set(1) {"123"}
> inst.elem.add('123');
: Set(1) {"123"}size: (...)__proto__: Set[[Entries]]: Array(1)0: "123"length: 1
> JSON.stringify(inst)
: "{"elem":{},"str":"somestring"}"
Run Code Online (Sandbox Code Playgroud)

我唯一能想到的是在字符串化之前将Sets和Maps分别递归转换为Arrays和Objects.但这听起来很费劲.

有没有更好的办法?谢谢.

javascript html5 json

2
推荐指数
1
解决办法
1534
查看次数

在 React 中切换语言而不使用外部库

在不使用外部库的情况下,您可以建议哪些方法来更改 React 中的语言?我的方法是使用三元运算符{language === 'en'? 'title': 'titre'}。如果语言为en,则显示 ;title如果不是,则显示titre。还有什么方法可以推荐一下。例如,翻译应放置在单独的 json 文件中。

代码在这里: https: //stackblitz.com/edit/react-eu9myn

class App extends Component {
  constructor() {
    super();
    this.state = {
      language: 'en'
    };
  }

  changeLanguage = () => {
    this.setState({
      language:  'fr'
    })
  }

  render() {
    const {language} = this.state;
    return (
      <div>
        <p>
          {language === 'en' ? 'title' : 'titre'}
        </p>
        <button onClick={this.changeLanguage}>change language</button>
      </div>
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

javascript internationalization reactjs

2
推荐指数
1
解决办法
2万
查看次数

如何使用纯JS制作弹出脚本?

我需要用纯JS编写脚本,以便在加载页面时显示弹出窗口。
背景需要褪色,我必须将自己的内容添加到弹出窗口中。我不想使用CSS或HTML。
将CSS和HTML放入Javascript代码中。有人可以帮我弄这个吗?
我可以自己做样式。
我只能使用外部CSS和HTML弹出窗口,而不能使用纯JS弹出窗口。它只必须是用纯JS编写的简单弹出窗口,它在加载页面时就会弹出。

请帮我!!

我更喜欢使用JSFiddle。

javascript css popup

-2
推荐指数
1
解决办法
3577
查看次数