相关疑难解决方法(0)

警告:flattenChildren(...):遇到两个具有相同键的子项/子键必须是唯一的

昨天我加入react-router-dom了我的项目,现在当我离开并回到Sky导航中的元素时,它重新加载了天空,我得到了

警告:flattenChildren(...):遇到两个孩子用同一把钥匙,element-id-50.子键必须是唯一的; 当两个孩子共用一把钥匙时,只会使用第一个孩子.

(上面使用的数字50只是一个例子,每次使用不同的id时,它会抛出此错误~40次)

问题似乎源于我的sky.js文件:

componentWillMount() {
    this.props.dispatch(requestSkySetup());
    this.props.dispatch(requestAllElements());

    this.setState({loadedSky: true, loadedElements: true});
}
Run Code Online (Sandbox Code Playgroud)

因为每次我要去另一个屏幕时,这个组件都会卸载,然后在我回来时重新安装.

receiveSkySetup完成后,render在功能上sky.js产生了一堆的div称为SectorS和各Sector创建一些div的名为Slot秒.

然后在里面Slot.render我有:

return connectDropTarget(
            <div className={showOutline ? 'slot showOutline' : 'slot'} style={style} onClick={interactable ? this.handleClick : null}>
                {
                    elements
                        .map(e => (
                            <SkyElement
                                id={e.id}
                                key={`element-id-${e.id}`}
                                title={e.title}
                                size={150}
                                opacity={e.opacity}
                                glow={e.glow}
                                color={e.color}
                                sectorId={e.sectorId}
                                slotId={e.id}
                                dispatch={this.props.dispatch}
                                isDragging={false}
                                transformElement={false} />
                        ))
                }
            </div>
        );
Run Code Online (Sandbox Code Playgroud)

上面调用中的key元素 …

javascript reactjs electron redux react-redux

14
推荐指数
1
解决办法
864
查看次数

如何在JavaScript中创建唯一项目列表?

在我的CouchDB reduce函数中,我需要将项目列表减少到唯一的项目.

注意:在这种情况下,可以有一个列表,它将是少量的字符串类型的项目.

我目前的方法是设置一个对象的键,然后返回该对象的键,因为代码不能使用这样的地方_.uniq.

我想找一个更优雅的拼写方法.

function(keys, values, rereduce) {
  // values is a Array of Arrays
  values = Array.concat.apply(null, values);
  var uniq = {};
  values.forEach(function(item) { uniq[item] = true; });
  return Object.keys(uniq);
}
Run Code Online (Sandbox Code Playgroud)

javascript arrays couchdb

12
推荐指数
4
解决办法
3万
查看次数

javascript中的数组的unique()

众所周知,没有内置函数可以在javascript中从数组中删除重复项.我注意到这也缺少jQuery(它只有DOM选择的独特功能),我发现的最常见的片段检查整个数组及其中每个元素的一个子集(我认为效率不高),如:

for (var i = 0; i < arr.length; i++)
    for (var j = i + 1; j < arr.length; j++)
        if (arr[i] === arr[j])
            //whatever
Run Code Online (Sandbox Code Playgroud)

所以我自己做了:

function unique (arr) {
    var hash = {}, result = [];
    for (var i = 0; i < arr.length; i++)
        if (!(arr[i] in hash)) { //it works with objects! in FF, at least
            hash[arr[i]] = true;
            result.push(arr[i]);
        }
    return result;
}
Run Code Online (Sandbox Code Playgroud)

我想知道是否有任何其他算法被认为是最适合这种情况的(或者如果你看到任何明显的缺陷可以修复),或者,当你在javascript中需要它时你会做什么(我知道jQuery不是只有框架和其他一些可能已经涵盖了这一点).

javascript arrays algorithm unique

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

如何从javascript Array.map()回调中排除一些元素

基本上,我想实现以下内容:

var categories = [];
var products = // some array of product objects
products.map(function(value) {
   if(categories.indexOf(value.Category === -1)) categories.push(value.Category);
});
Run Code Online (Sandbox Code Playgroud)

因此,categories数组包含唯一的产品类别列表.

觉得应该有一个更好的方法去做,但没有想到任何事情.

如果没有,那么可能首先没有必要使用map().我可以这么简单

var categories = [];
var products = // some array of product objects
for (var i = 0; i < products.length; i++) {
   if(categories.indexOf(products[i].Category === -1)) categories.push(products[i].Category);
}
Run Code Online (Sandbox Code Playgroud)

更新那些坚持认为它是"如何制作阵列唯一"问题的复制品.我看到了这个帖子,对于我的情况,我认为它不适用.我没有一系列值,我需要使其独特.我有一个对象数组,我需要构建一个唯一值数组.差异可能很微妙 - 但是要了解该主题的用例,我将构建一个非唯一的数组,然后使其唯一.似乎比我原来的解决方案更糟糕

javascript arrays

9
推荐指数
2
解决办法
9720
查看次数

如何获取Google Chrome中所有加载的CSS类的列表?

有时我需要打印一个CSS类列表来找到合适的类.

最适合我的是JS控制台中的函数:在输入时加载和过滤JS类列表.

因此,例如,如果我需要记住一个图像类,我正在键入"Img",然后加载一个图像类列表("ImgFolder","ImgPencil"......).

css google-chrome

8
推荐指数
1
解决办法
1486
查看次数

独特的日期数组Javascript

我看到这个问题经常被问到常规的javascript数组,但是如果有一个日期数组,那么答案似乎都无法解决.

我可以通过试验错误地解决这个问题,但如果我问的话,我确实看到了其他人的一些好处.

基本上如果你有一个javascript数组的日期可能有重复,需要过滤到一个没有重复的数组,最好的方法是什么?

我尝试过ES6解决方案,Array.from(new Set(arr))但它只返回相同的数组.

我也试过了

Array.prototype.unique = function() {
    var a = [];
    for (var i=0, l=this.length; i<l; i++)
        if (a.indexOf(this[i]) === -1)
            a.push(this[i]);
    return a;
}
Run Code Online (Sandbox Code Playgroud)

两者都来自数组中的唯一值

但是没有工作,看起来像是indexOf在日期对象上不起作用.

这是我的数组生成atm的方式

//this is an array generated from ajax data, 
//its a year over year comparison with a separate year, 
//so to create a reliable date objects I force it to use the same year.
data.map(d => {
   dp = new Date(Date.parse(d.date + '-' + d.year)); …
Run Code Online (Sandbox Code Playgroud)

javascript arrays date

8
推荐指数
3
解决办法
4492
查看次数

Ckeditor - 在"选择"字段中加载动态字段值

我正在尝试为ckeditor中的下拉字段加载动态输入值:

正如您在按下按钮时所看到的,下拉列表中未加载任何值:

在此输入图像描述

我想在我的下拉列表中加载以下值(应该与onLoad函数中的reged匹配):

{{ $slot }}
{{$example }}
{{ $Product2}}
{{$category1 }}
Run Code Online (Sandbox Code Playgroud)

由于代码片段不在堆栈片段上运行,因此我在codepen上完全解决了问题.请参阅以下链接:https://codepen.io/anon/pen/NBXObP

我的插件代码如下所示:

var selectedList = []

CKEDITOR.replace("editor", {
  extraPlugins: "insertData"
});

CKEDITOR.plugins.add( 'insertData', {

    icons: '',
    init: function( editor ) {

        editor.addCommand( 'insertData', new CKEDITOR.dialogCommand( 'insertDataDialog' ) );
        editor.ui.addButton( 'InsertData', {
            label: 'Insert InsertData',
            command: 'insertData',
            toolbar: 'insert'
        });

        if ( editor.contextMenu ) {
            editor.addMenuGroup( 'insertDataGroup' );
            editor.addMenuItem( 'insertDataItem', {
                label: 'Edit InsertData',
                icon: this.path + 'icons/insertData.png',
                command: 'insertData',
                group: 'insertDataGroup'
            });

            editor.contextMenu.addListener( …
Run Code Online (Sandbox Code Playgroud)

javascript wysiwyg ckeditor ckeditor4.x

8
推荐指数
1
解决办法
427
查看次数

javascript中是否有unique()函数来删除数字数组中的类似元素?

我有一系列数字,如:[1,4,7,1,2,1,3,1,4].

我想删除重复的元素并对结果进行排序,即所需的结果是:[1,2,3,4,7].

是否有内置的Javascript/jQuery函数来执行此操作,或者我必须编写自己的函数?

javascript arrays jquery unique

7
推荐指数
1
解决办法
5802
查看次数

使用Element作为JavaScript中Hash的键

我想用DOM元素作为键创建一个哈希.这由以下代码说明:

var hash = {};
var set = function(element, value) {  hash[element] = value; };
var get = function(element)        {  return hash[element];  };

set(document.getElementById('foo'), 'bar');
get(document.getElementById('foo')); // returns 'bar'
Run Code Online (Sandbox Code Playgroud)

如何确保哈希映射到每个哈希值的唯一值Element
请注意,我不能将原始ID字符串用作键,因为Element可以传入任意字符串,包括那些没有id的字符串.

javascript hashmap weakmap

6
推荐指数
1
解决办法
1759
查看次数

在Javascript中从Array中删除重复的元素

我有一个带有obejcts电子邮件和Id的数组,所以我想要删除具有相似ID的重复元素.

例:

var newarray=[
    {
        Email:"test1@gmail.com",
        ID:"A"
    },
    {
        Email:"test2@gmail.com",
        ID:"B"
    },
    {
        Email:"test3@gmail.com",
        ID:"A"
    },
    {
        Email:"test4@gmail.com",
        ID:"C"
    },
    {
        Email:"test4@gmail.com",
        ID:"C"
    }
];
Run Code Online (Sandbox Code Playgroud)

现在我需要删除ID很常见的重复元素.我期待最终的数组是

var FinalArray=[
    {
        Email:"test1@gmail.com",
        ID:"A"
    },
    {
        Email:"test2@gmail.com",
        ID:"B"
    },  
    {
        Email:"test5@gmail.com",
        ID:"C"
    }
];
Run Code Online (Sandbox Code Playgroud)

javascript arrays duplicates

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