Как нарезать по значению свойства объекта индекса, который является строкой? - PullRequest
1 голос
/ 22 марта 2020

У меня есть объект:

const text = {
    type: 'text',
    content: "some text",
};

Мне нужно значение среза свойства content по индексу, например, если у меня есть index = 4, тогда console.log(text.content) должно напечатать:

"некоторые"

Похоже, этот код не работает:

text.content.slice(0, index);

У меня все еще есть

"некоторый текст "

on console.log(text.content).

Что я неправильно понял?

Ответы [ 5 ]

2 голосов
/ 22 марта 2020

Строки неизменны. вам нужно присвоить свойству новую подстроку.

const
    text = { type: 'text', content: "some text" },
    index = 4;
    
text.content = text.content.slice(0, index); // assignment of substring

console.log(text.content);
1 голос
/ 22 марта 2020

По спецификации ( MDN ):

Метод slice () извлекает часть строки и возвращает ее как новую строку без изменения исходной строки.

const text = {
    type: 'text',
    content: "some text",
};

const index = 4;
const result = text.content.slice(0, index);

console.log(text.content); // some text
console.log(result); // some

text.content = result;
console.log(text.content); // some
1 голос
/ 22 марта 2020

strings are immutable. Вам необходимо присвоить значение sliced обратно content

const text = {
    type: 'text',
    content: "some text",
};
const index=4;
text.content=text.content.slice(0,index)
console.log(text)

slice отлично работает

1 голос
/ 22 марта 2020

Срез не изменяет строку. Так что если вы вместо этого console.log (text.content.slice (0, index)), вы увидите результат, который вы ищете.

1 голос
/ 22 марта 2020

Посмотрите на string.substring ():

https://devdocs.io/javascript/global_objects/string/substring

Вот вам go:

text.content.substring(0, index)

...