如何从值数组jquery中查找键。在这里,我想看到console.log(位置)。但它显示未定义

时间:2018-01-23 06:37:55

标签: javascript jquery trie

enter image description here
如果我console.log(position)它显示我未定义。

如何通过获取值来解决它。在这里,我想将节点作为控制台中的trie。输出没问题,但如果我var nodes = ["maria","mary","marks"]; function insert_word(split_nodes) { var rest = []; for ( var i = 0; i<split_nodes.length; i++ ) { //console.log(current); var word = split_nodes[i]; var letters = word.split(""); var current = rest; //console.log(current); for ( var j = 0; j < letters.length; j++ ) { var character = letters[j]; // console.log(chaaracter); var position = current[ character ]; console.log(position); if ( position == null ) { current = current[ character ] = j == letters.length - 1 ? 0 : {}; // console.log(current); } else { current = current[ character ]; // console.log(current); } } } } insert_word(nodes); 它显示未定义。

任何人都可以帮助我吗?

var items;
$('#dropDownId').change(function() {                                                                            
     items = $("#dropDownId option[value='0']").detach();
     amClose();
});

function amClose() {
    $(".am_dd_text p i").click(function() {                                              
      $("#dropDownId").append(items );   
   });
  }

这是我的输出。

2 个答案:

答案 0 :(得分:0)

如果我是正确的,你需要的就是在数组中找到元素的索引。 这就是你如何做到的。

case APP_TCPIP_WAIT_FOR_RESPONSE: 
{ 
    char Appbuffer[80]; 
    static const char ACK[]="START"; 
    static const char AOK[]="STOP"; 
    memset(Appbuffer, 0, sizeof(Appbuffer)); 
    if (!TCPIP_TCP_IsConnected(appData.clientSocket)) 
    { 
        SYS_CONSOLE_MESSAGE("\r\nConnection Closed\r\n"); 
        appData.clientState = APP_TCPIP_WAITING_FOR_COMMAND; 
        break; 
    } 
    if (TCPIP_TCP_GetIsReady(appData.clientSocket)) 
    { 
        TCPIP_TCP_ArrayGet(appData.clientSocket, (uint8_t*)Appbuffer, sizeof(Appbuffer) - 1); 
        SYS_CONSOLE_PRINT("%s", Appbuffer); 
        if(!strcmp(Appbuffer, ACK)) //// breakpoint 
        { 
            BSP_LEDStateSet(BSP_LED_1,BSP_LED_STATE_ON); 
            BSP_LEDStateSet(BSP_LED_2,BSP_LED_STATE_ON); 
            BSP_LEDStateSet(BSP_LED_3,BSP_LED_STATE_ON); 
        } 
        else if(!strcmp(Appbuffer, AOK)) // breakpoint 
        { 
            BSP_LEDStateSet(BSP_LED_1,BSP_LED_STATE_OFF); 
            appData.serverState = APP_TCPIP_CLOSING_CONNECTION; 
            SYS_CONSOLE_MESSAGE("Connection was closed\r\n"); 
        } 
    } 
}

参考: https://www.w3schools.com/jsref/jsref_indexof_array.asp

答案 1 :(得分:0)

我真的不明白你要用这段代码实现什么,因为它没有用,但我可以告诉你为什么要打印undefined

var current = rest;您基本上是在呼叫var current = [],之后当您致电var position = current[ character ];时,您正试图接收current变量中不存在的索引,因为您的current等于空数组。

编辑02:

  

@ zeropublix我必须实现这一目标。如果它的废话比废话,但我必须这样做。它就像特里结构。你可以帮我解决一下代码吗

您的任务解决方案:

var nodes = ["maria","mary","marks"];

function nodesToTree(nodes) {
    var tree = {};

    for (var i = 0; i < nodes.length; i++) {
        var word = nodes[i];
        var letters = word.split("");
        var current = tree;

        for (var j = 0; j < letters.length; j++) {
            var char = letters[j];

            if (Object.keys(current).length <= 0) {
                current[char] = {};
            } else if (!Object.keys(current).includes(char)) {
                current[char] = {};
            }

            if (j+1 == letters.length) {
                current[char] = 0;
            }

            current = current[char];
        }
    }

    return tree;
}



console.log(
    nodesToTree(nodes)
);